您的位置:首页 > 数据库 > Oracle

索引失效原因分类

2015-09-11 21:18 471 查看
1、 没有查询条件,或者查询条件没有建立索引

2、 在查询条件上没有使用复合索引引导列

3、查询的数据量超过了表数据量的15%

4、索引本身失效(status=UNUSABLE)

5、查询条件使用函数在索引列上

6、对小表查询

7、使用hint提示不使用索引

8、统计信息不真实

9、CBO认为走全表扫描比走索引代价小

10、隐式转换导致索引失效

由于表的字段是varchar2类型,但在查询时把该字段作为number类型以where条件传给oracle,这样会导致索引失效。

错误的例子:select * from t2 where id=112

正确的例子:select * from t2 where id='112'

11、对索引列运算导致索引失效

这里的运算包括(+ - * / <> != )

12、使用oracle内部函数导致索引失效,对于这种情况,应该建立函数索引

13、模糊查询%在前

错误的例子:select * from t4 where name like '%aaa%'

正确的例子:select * from t4 where name like 'aaa%'

14、查询条件中or

注意:要想使用or,又想让索引生效,只能将or条件中的每个列加上索引

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 管理 索引