5.1.3 索引的分类
Oracle中的索引灵活多样,根据其组织结构和索引的定义方式,索引又可以细分为多种类型,如下所示。
单列索引:索引基于数据库表的单个列而创建,比如只在empno列上创建的索引,就是单列索引。
复合索引:索引基于数据库表的多个列所创建。比如索引基于empno和ename列而创建,这种索引称为复合索引。
B树索引:Oracle默认使用的索引,索引按B树结构组织并存放索引数据,索引可以是单列索引或复合索引、***索引或非***索引。
位图索引:为索引列的每个取值创建一个位图(bit位,而非图片),对表中的每行使用1位(bit,取值为0或1)来表示该行是否包含该位图的索引列的取值。
函数索引:索引的取值不直接来自列,而是来自包含有列的函数或表达式,这就是函数索引。
在Oracle的索引分类中,B树索引是默认的索引,B树索引实际上就是一棵二叉树,由根、分支和叶节点构成,其中根指向分支的节点信息,分支节点指向下级分支部分和指向叶子节点的信息。叶子节点指向表中每个匹配行的ROWID信息,它是一个双向链表,可以对它们进行任何方面的范围扫描。
B树索引结构如图5.2所示。
B树索引使用B树算法组织并存放索引数据,所有的叶节点都具有相同的深度,因此使用B树索引无论是查询大的表还是小型表,索引的效率都是相同的。
索引一旦创建,Oracle服务器会自动维护所有的索引,如果对表执行插入、修改或删除操作时,DML命令会对索引产生影响:
删除行只会导致对索引条目进行逻辑删除,在删除块中所有条目之前,已删除行占用的空间不可用于新的条目。
插入行会导致在相应的索引段中插入新的索引条目。
更新行会导致对索引进行逻辑删除和插入。
(点击查看大图)图5.2 B树索引结构
【责任编辑:book TEL:(010)68476606】
点赞 0