虽然创建创建了索引但是不正确的过滤条件(where )会导致索引不起作用,查询数据的时候任然是全表扫描
以下几种情况会导致索引不起作用
1、使用不等于运算符号(<>、!=), 索引只能查找表中存在的数据。
2、使用is null或者is not null,null值并没有被定义(Oracle不会在B树索引中对null值索引),所以索引会被抑制。
3、使用like,在某些情况下条件中的like会使用索引(’123%‘),某些情况索引会被抑制(’%123%‘)。
4、使用函数(trunc、substr、to_date、to_char、instr等),列值被改变,索引被抑制。
5、比较不匹配的数据类型,oracle不但不会对那些不兼容的数据类型报错,反而会隐式数据转换,数据类型转换列值被改变,索引被抑制。
索引被抑制后会执行全表扫描,导致检索速度降低