【转】初识 oracle 中的索引组织表
来源:互联网 发布:新点软件下载 编辑:程序博客网 时间:2024/06/10 00:09
http://fangrn.javaeye.com/blog/514448
初识 oracle 中的索引组织表
索引组织表( IOT )有一种类 B 树的存储组织方法。普通的堆组织表是以一种无序的集合存储。而 IOT 中的数据是按主键有序的存储在 B 树索引结构中。与一般 B 树索引不同的的是,在 IOT 中每个叶结点即有每行的主键列值,又有那些非主键列值。
如下图所示,在 IOT 所对应的 B 树结构中,每个索引项包括 < 主键列值,非主键列值 > 而不是 ROWID ,对于普通堆组织表, oracle 会有对应的索引与之对应,且分开存储。换句话说, IOT 即是索引,又是实际的数据。
普通表索引与表数据的对应关系
IOT 的索引项和表数据的对应关系
IOT 和普通表对于应用程序来说,例如 sql 查询语句,是没有区别的。也就是说 oracle 中对表的组织形式对应用来说是透明的。
下表总结了 IOT 与一般表的区别:
普通表
IOT
ROWID 唯一确定一行录
主键唯一确定一行记录
可以不指定主键
必须指定主键
ROWID 伪列中保存物理 rowid ,可以构建二级索引
ROWID 伪列中保存逻辑 rowid ,可以构建二级索引
基于 rowid 进行访问
基于逻辑 rowid 进行访问
顺序扫描才能得到所有行
只须扫描索引即可返回所有行
可以和其它表一起聚集存储
不能存储为聚集表
可以包含 long 和 lob 类型的列
可以包含 lob 类型但不可以包括 long 类型的列
使用 IOT 的好处:
1 、由于索引项和数据存储在一起,所以无论是基于主键的等值查询还是范围查询都能大大节省磁盘访问时间。
2 、为了能够更快地访问那些频繁访问的列,可以使用溢出存储选项将那些访问不频繁的列放在 B 树叶结点数据块之外的溢出堆空间中。这样一来便可以得到更小的 B 树,以及包含更多行的叶结点
3 、和堆组织表和索引不同,主键不需要被存储两次。
4 、 ROWID 伪列是基于主键值的逻辑 rowid ,而不是物理 rowid ,即使表被重新组织过,造成了基表行的迁移,二级索引仍然可用,不需要重建。
注:
1 、 Oracle 使用 rowid 数据类型存储行地址 ,rowid 可以分成两种,分别适于不同的对象, Physical rowids :存储 ordinary table,clustered table,table partition and subpartition,indexe,index partition and subpartition; Logical rowids : 存储 IOT 的行地址
2 、每个表在 oracle 内部都有一个 ROWID 伪列 , 它在所有 sql 中无法显示,不占存储空间 ; 它用于从表中查询行的地址或者在 where 中进行参照 , 一个例子如下:
SELECT ROWID, last_name FROM employees; Oracle 内部使用保留在 ROWID 伪列中的值构建索引结构 ,rowid 伪列不存储在数据库 中 , 它不是数据库表的数据 , (从 database 及 table 的逻辑结构来说)。事实上 , 在物理结构上 , 每行由一个或多个 row pieces 组成 , 每个 row piece 的头部包含了这个 piece 的 address, 即 rowid. 从这个意义上来说, rowid 还是占了磁盘空间的 .
3 、二级索引: 也可理解为聚集索引,好比是我们人查字典时自已会使用的索引。
- 【转】初识 oracle 中的索引组织表
- 初识oracle中的索引组织表
- oracle索引组织表
- 【转】 Oracle表介绍--索引组织表
- oracle索引组织表-----介绍
- oracle索引组织表-----介绍
- oracle索引组织表-----介绍
- oracle索引组织表-----概述
- oracle 索引组织表IOT
- oracle 索引组织表 IOT
- Oracle dump索引组织表
- Oracle之索引组织表
- oracle 索引组织表,索引聚簇表等
- oracle索引组织表----索引组织表性能测试
- Oracle表介绍--索引组织表
- Oracle 索引组织表(IOT)
- Oracle 索引组织表(IOT)
- Oracle 索引组织表(IOT)
- 总结windows下堆溢出的三种利用方式
- 学习嵌入式linux开发的一点建议
- STL std::string 类导致崩溃和内存损坏多处理器计算机上
- C#:正则表达式30分钟入门教程
- 内核级HOOK的几种实现与应用
- 【转】初识 oracle 中的索引组织表
- NDIS 函 数 简 明 手 册
- std::string放在结构中不能删除对象的问题解决
- SMTP乱码解决方案
- 挂钩Windows API
- 今天学习得心得
- 国际域名到期删除规则
- GridView控件与CheckBox结合,实现全选功能,同时实现删除选中的多行数据