本人用的数据库: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