rownum 之后 索引就全表扫描了 查询很慢

zq5337 2011-01-13 05:27:42
select v.* from (select rid,xm,zjhm.... from t_rjbxxfj where rid in (select r.rid from (select fwbm from t_fwjbxx where jzwbm='23423424242342654646') fw,t_rjbxx r where fw.fwbm=r.jzfwbm or fw.fwbm=r.hjfwbm)) v
where rownum<=10


当我加上这个where rownum<=10 之后 就根据这个rid去遍历表了
去掉之后 它有根据这个rid去遍历表了
纳闷了?rid 是索引列
大家来看看这是为什么了?
...全文
444 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zq5337 2011-01-13
  • 打赏
  • 举报
回复
已经解决掉了 order by 之后确实快了很多
njlywy 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dawugui 的回复:]
rownum不会遍历表,如同sql server top n * 一样.

除非你加了排序
[/Quote]
+1
dawugui 2011-01-13
  • 打赏
  • 举报
回复
rownum不会遍历表,如同sql server top n * 一样.

除非你加了排序

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧