求学资讯 oracle认证 提问
oracle认证 > 应用技术

oracle认证之应用技术:oracle的rownum问题

来源:用户上传 上传用户:zfy 发布时间:2017-06-26

导读:
求学资讯网更新了“oracle认证之应用技术:oracle的rownum问题” ,供各位考生参考,更多考试资讯请关注求学资讯网。

  ownum和top是不一样的,rownum用来分页是先全选出来,然后取多少条,效率是比较低的。

  举例

  在工作中碰见这样的问题

  select wfcount,cid from (select count(customer_id) wfcount, customer_id cid

  from aaa_review

  where wonderful_flag = 1

  group by customer_id

  order by wfcount desc) where rownum <100

  运行时间超过27秒

  而把外层rownum取消

  select count(customer_id) wfcount, customer_id cid

  from aaa_review

  where wonderful_flag = 1

  group by customer_id

  order by wfcount desc

  竟然在0.8秒就可以完成,差距非常之大

  后来,分析oracle的调用计划,发现竟然用了不同的索引,而且,慢的那个用了一个狠不相关的全局索引,可见,加上rownum外层查询之后,oracle处理起来和不加rownum的外层处理是完全不一样的。

  后来改动为

  select wfcount,cid from (select /*+ index(aaa_review wonderful_IwDX) */ count(customer_id) wfcount, customer_id cid

  from aaa_review

  where wonderful_flag = 1

  group by customer_id

  order by wfcount desc) where rownum <100

  虽然运行时间是0.9秒左右,比不加rownum慢一些,但是已经可以接受。


声明:本站为免费网络服务提供商,网站所有信息均为用户自行发布并由用户承担相应法律责任,本站不对其真实性及合法性负责,如涉及侵权或者信息违法,请你及时与本站联系删除。

阅读 1089 举报

相关推荐
评论0

当前没有评论内容

发表评论 0条评论
99
微博
QQ
QQ空间
微信
取消