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