日期:2014-05-17  浏览次数:21052 次

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';,应该可以用到索引了?


引用:
应该也可以用到索引的。
你看到执行计划里面没有用到索引吗?