oracle数据库对象-索引

一、索引的概念

索引类似于查字典,通过拼音、笔画,只要几步就能查到所要的字。数据库里,通过索引,只要少量的读,就能找到所需的记录。

使用索引需要找到一个平衡点,索引太多会影响DML语句的速度,因为要写索引表。索引太少又不能提高查询速度。

二、B*树索引


1、B*树索引:我们所说的“传统”的索引。create index 创建的索引默认是B*索引。

B*数索引类似于一颗二叉树,但并不是二叉树。B*树中的“B”不代表二叉(binary),而代表平衡(balanced)。

B*树的特点之一是:所有叶子块都应该在树的同一层上。

这一层也称为索引的高度(height),这说明所有从索引的根块到叶子块的遍历都会访问同样数目的块。也就是说,对于形如“SELECT INDEXED_COL FROM T WHERE INDEXED_COL = :X”的索引,要到达叶子块来获取第一行,不论使用的:X值是什么,都会执行同样数目的I/O。

换句话说,索引是高度平衡的(height balanced)。大多数B*树索引的高度都是2或者3,即使索引中有数百万行记录也是如此。这说明,一般来讲,在索引中找到一个键只需要执行2或3次I/O。
继续阅读oracle数据库对象-索引