1.1 索引的定义
索引类似与书的目录结构,可以根据目录中的页码快速找到需要的内容。
索引是一个单独的、物理的数据库结构,它是某个表中一列或者几列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。使用索引可以快速访问数据库表中的特定信息。
Oracle自动维护索引,插入、删除、更新表中数据时,自动更新索引。
1.2 索引的分类
1.2.1 唯一索引
当建立PrimaryKey(主键)或者Unique constraint(唯一约束)时,唯一索引将被自动建立。顾名思义,建立唯一索引的字段上不能存在两个或两个以上的相同的值。
1.2.2 B树索引(默认类型)
B树索引在Oracle中是一个通用索引。在创建索引时它就是默认的索引类型。B树索引可以是一个列的(简单)索引,也可以是组合/复合(多个列)的索引。B树索引最多可以包括32列。
B树索引的存储示意图如下:
树叶块包含了索引值、ROWID,以及指向前一个和后一个树叶块的指针。Oracle可以从两个方向遍历这个二叉树。B树索引保存了在索引列上有值的每个数据行的ROWID值。Oracle不会对索引列上包含NULL值的行进行索引。如果索引是多个列的组合索引,而其中列上包含NULL值,这一行就会处于包含NULL值的索引列中,且将被处理为空(视为NULL)。
索引列的值都存储在索引中。因此,可以建立一个组合(复合)索引,这些索引可以直接满足查询,而不用访问表。这就不用从表中检索数据,从而减少了I/O量。
<