Oracle数据库索引

Posted 闭关苦炼内功

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库索引相关的知识,希望对你有一定的参考价值。

索引是对数据库表中一列或多列的值进行排序的一种结构

索引提供指向存储在表的指定列中的数据值的指针,然后根据指定的排序顺序对这些指针排序

数据库使用索引的方式与使用书籍中索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行

通过使用索引,可以大大降低I/O次数,从而提高SQL语句的访问性能

按照索引列的个数,可将索引分为单列索引和复合索引
单列索引是指基于单个列所创建的索引
复合索引是指基于两列或多列创建的索引

当建立复合索引时,索引列不能超过32个

在同一个表的多个列上可以创建多个索引,但要求列的组合不能相同

按照索引列值的唯一性,分为唯一索引、非唯一索引
唯一索引是指索引列值不能重复的索引
非唯一索引是指索引列值可以重复的索引
唯一索引关键字UNIQUE

选择索引字段原则
(1)选择在WHERE子句中使用最频繁的字段
(2)选择联接语句中的联接字段
(3)选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性很好)
(4)不要在经常被修改的字段上建索引
(5)可以考虑在外键字段上建索引
(6)当建立索引后,请比较一下索引后所获得的查询性能的提高和DML操作性能上的损失,比较得失后,再最后决定是否需要建立这个索引

复合索引字段排序的原则
(1)确保WHERE子句中使用到的字段是复合索引的第一个字段
(2)如果某个字段在WHERE子句中频繁使用,则在建立复合索引时,考虑把这个字段排在第一位
(3)如果所有的字段在WHERE子句中使用频率相同,则将最具选择性的字段排在最前面,将最不具选择性的字段排在最后面

当某几个字段在SQL语句的WHERE子句中经常通过AND操作符联合在一起作为过滤谓词使用,并且这几个字段合在一起比各自单个字段的选择性要更好时,可以考虑用这几个字段来建立复合索引

以上是关于Oracle数据库索引的主要内容,如果未能解决你的问题,请参考以下文章

在oracle数据库中普通索引和唯一索引,请问哪个效率更高?

oracle 索引存在则删除

oracle 数据库中主键索引和唯一索引有啥区别

oracle数据库中如何查看已经创建的索引信息?

oracle查询数据速度慢,已建索引的。求助

oracle如何避免查询数据的时候索引失效