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数据库索引的主要内容,如果未能解决你的问题,请参考以下文章