SQL索引查询条件 Oracle 9i,table表:A+B字段有复合索引,
使用SQL:
select * from table where a='a' and b='b';可以用到该索引
使用SQL:
select * from table where (a='a' or a=' ') and b='b';,即带有OR条件的,用到该索引与上面SQL在执行计划上没什么不同?谢谢! ------最佳解决方案-------------------- 你这话问的,首先,复合索引有个前置性原则。其次,有没有用到,直接在plsql中按f5
直接就可以看到是否用到。 ------其他解决方案-------------------- 复合索引有个优先级的问题,只有在用到第一个列时,索引才会有用 ------其他解决方案-------------------- 应该也可以用到索引的。
你看到执行计划里面没有用到索引吗? ------其他解决方案-------------------- 那种情况其实也是用了第一列了吧? ------其他解决方案-------------------- 说的不准确,如果是select * from table where (a='a' or a=' ') and b='b';则可能不用索引,因为有空值。
如果是select * from table where (a='a' or a='*') and b='b';,应该可以用到索引了?