oracle索引 oracle索引结构 oracle索引使用 B*Tree索引

       在进行数据查询的时候如果碰到大量数据集中的少量数据查询问题,可以通过在查询字段上新增索引提高查询速度

如果查询的结果集是大批量数据,那么就没必要使用索引了。

索引结构

举个例子:表A 列 a, b, c 新建一个基于a的索引。这时候就会产生一个  a和rowid的映射,rowid就是物理地址。

由于 索引和rowid的映射关系是用平衡树的数据结构,查询到每个叶子节点的执行速度都是一样的,这就使得在查询索引列数据时速度很快,从而提高了查询的速度。

查询过程

比如查询 a=2的数据,实际上是先查找 a 和 rowid的对应关系,然后在根据rowid查找表A中记录。


B*Tree索引

B*Tree索引是Balanced Tree Index的简称, 表示所有叶子块都处在树的同一个高度,由此,从索引上
查询任何记录所花的时间是大致相同的。
B*Tree的索引叶子块之间是双向链表,使得相邻块可以直接通过指针快速访问。 图中绿色箭头表示指
向相邻块的地址指针。


索引什么时候用

1-  表数据量大,要查询的数据集小

2- 表数据不进行频繁的dml操作,因为添加索引是势必影响数据操作的效率,所以有时在进行报表统计及临时表生成的过程中如果执行insert 或update都会先删掉索引

查询时在启用。



你可能感兴趣的:(oracle查询)