本人用的数据库:oracle 11g,优化器:CBO(基于代价的优化器)。

索引的目标是避免全表扫描,提高查询效率,但有的语句看执行计划会发现并没有走索引,下面分析下几种导致索引失效的原因(不全).

这里建了一张表:SMTS_USER_INFO_DTL

表字段如下:

索引失效浅谈

索引:

索引失效浅谈

原因1:使用了 is null 或 is not null

如下:

索引失效浅谈

 

索引失效浅谈

 

原因2:<>

如下:

索引失效浅谈

 

原因3:索引列上使用函数或索引列上进行运算

如下:

索引失效浅谈

索引失效浅谈

 

原因4:like '%_' 百分号在前

索引失效浅谈

 

原因5:单独使用复合索引里非第一位的索引列

索引失效浅谈

索引失效浅谈

原因6:隐式转换

索引失效浅谈

这是因为oracle会自动换为:to_number(t.mobile) =1

原因7:not in

索引失效浅谈

 

相关文章:

  • 2021-07-24
  • 2021-09-04
  • 2022-01-23
  • 2021-10-08
  • 2021-10-25
  • 2021-11-28
  • 2021-09-14
猜你喜欢
  • 2021-04-20
  • 2021-10-14
  • 2021-09-08
  • 2021-11-07
  • 2021-09-09
  • 2022-12-23
相关资源
相似解决方案