1、索引的概念
1)概念:Oracle数据库中的索引是一种建立在表或簇基础上的数据对象,和表一样具有独立的段存储结构,需要在表空间中为其分配存储空间。
2)作用:可以提高查询表中数据的速度。
2、索引的类型(面试题)
1)B树索引(考点):是应用最广泛的索引,也是Oracle数据库的默认索引类型。B树指的是平衡树(Balanced Tree),它是使用平衡算法来管理索引的。
适合B树索引的场合有:
- 表中存储的数据行数很多。
- 列中存储的数据的不同值很多。
- 查询的数据量不超过全部数据行的5%,否则应使用全表扫描。
2)位图索引:当要建立索引列的数据有大量的重复值时,如果在其上建立了B树索引,则那么叶块中就会存储大量相同的索引列值,反而会降低查询的速度。这种情况下就应该使用位图索引。
每一个索引列值都存储一个位图,该位图由二进制位组成。
3)反向键索引:是一种B树索引,它在物理上反转索引的列值,但是列的顺序保持不变。反向键索引通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上,其目的是为了解决叶块争用问题。
l对于创建反向键索引的列,在执行查询操作时,Oracle数据库会自动将查询条件反转以与反向键索引匹配。如果在WHERE子句中使用范围查询条件,比如BETWEEN、<、>等,由于索引值被反转,不会按照原来的排序进行查询,查询时必须执行全表扫描,因此建立反向键索引的列不适合用于范围查询。
4)基于函数的索引:基于函数的索引会先对列的函数或表达式进行计算然后将计算的结果存入索引中。创建这种类型的索引时需要注意一下几点:
- 创建时必须具有 QUERY REWRITE系统权限。
- 表达式中不能出现聚合函数。
- 不能在LOB类型的列上创建。
5)唯一索引和非唯一索引(考点)
如果根据索引值是否可以相同,可以将索引分为唯一索引和非唯一索引。和唯一约束