oracle导致索引失效的几种情况

334 阅读1分钟

一.使用索引的主要原因:

可以加快查询速度减少I/O操作消除磁盘排序

二.什么场景下适合建立索引

1)在经常需要搜索的列上,可以加快搜索的速度

2)在作为主键的列上,强调该列的唯一性

3)在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度

4)在经常需要根据范围进行搜索的列上创建索引(索引已排序)

5)在经常需要排序的列上创建索引(索引已排序)

6)在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度(索引已排序)

三.什么场景下不适合建立索引

1)对于那些在查询中很少使用的列不应该创建索引。由于增加了索引,反而降低了系统的维护速度和增大了空间需求

2)对于那些只有很少数据值的列也不应该增加索引。在查询的结果中,结果集的数据行占了表中数据行的很大比例,在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度

3)当修改性能远远大于检索性能时,不应该创建索引。修改性能和检索性能是互相矛盾的

四.导致索引失效的场景

1)使用不等于操作符(<>, !=)

2)使用 is null 或 is not null

3)使用函数

4)比较不匹配的数据类型

5)like "%_" 百分号在前