select * from table where (col='a' or col='b') and rownum<=10;
直接这样写,没做任何解释分析,结果没有用到索引
必须要加上hint
想问的是,有没有直接点的sql写法,既用到索引,又无需加hint
最好别用嵌套语句
...全文
23914打赏收藏
or和rownum同时使用的索引问题
表table的字段col加了索引 select * from table where (col='a' or col='b') and rownum<=10; 直接这样写,没做任何解释分析,结果没有用到索引 必须要加上hint 想问的是,有没有直接点的sql写法,既用到索引,又无需加hint 最好别用嵌套语句
楼上几位说的我也想了,但哪怕col是主键,都默认用full scan
[Quote=引用 4 楼 Allan_xd 的回复:]
下面的语句试过没?
select * from table where col in ('a','b') and rownum <=10;
[/Quote]oracle会解析成or,没啥区别
看来还是嵌套最直接,效率影响也不大
select * from (select * from table where col like 'a%' or col like 'b%')
where rownum<=10;