oracle 传统分页数据取出来后卡住的问题

cokroch 2016-09-29 09:12:54
第一种分页是我最早学过的分页

select y.fybm, y.ah, y.wslb, y.wsnr, y.jarq, y.ROWNO
from (select t.fybm, t.ah, t.wslb, t.wsnr, t.jarq, rownum ROWNO
from (select fybm, ah, wslb, wsnr, jarq from flws_1 order by id) t) y
where y.ROWNO between 0 and 1000;


flws 这张表中的数据超过12W条的时候,卡的时间就会越来越长,这时表的大小约500M,约卡3秒
当数据增加到14W的时候,卡的时间变为170~180秒 这时表的大小约为552M

实际需求中数据量750W+,因为数据接触不到所以自己模拟到200W数据的时候,取1000条结果,返回1000条之后
查询不能正常结束,
不管使用java jdbc 还是PL/SQL客户端界面,都会卡在最后,前面的数据都已经返回

请问是什么原因?

使用的第二种分页效率相差不大,但是不会卡住
select y.fybm, y.ah, y.wslb, y.wsnr, y.jarq, y.ROWNO
from (select t.fybm, t.ah, t.wslb, t.wsnr, t.jarq, rownum ROWNO
from (select fybm, ah, wslb, wsnr, jarq from flws order by id) t where rownum <=1000) y
where y.ROWNO >=1;

第二种方法不需要讨论,这里我只想弄清楚,传统的分页到底什么原因导致返回最后会卡顿?
请各位大神帮忙分析下
...全文
494 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2016-09-29
  • 打赏
  • 举报
回复
把最前面的 Description 展开吧,都看不到说明了;
cokroch 2016-09-29
  • 打赏
  • 举报
回复
有可以qq 讨论交流的吗? 597392453 这样帖子好慢~
cokroch 2016-09-29
  • 打赏
  • 举报
回复
卖水果的net 2016-09-29
  • 打赏
  • 举报
回复
引用 3 楼 xu13938111290 的回复:
谢谢,这样分页也可以,但是效率并不比上面两种分页好
你看执行计划了吗,贴一下;
cokroch 2016-09-29
  • 打赏
  • 举报
回复
引用 2 楼 wmxcn2000 的回复:

-- 使用 row_number 函数 

 select *
   from (select fybm, ah, wslb, wsnr, jar, row_number() over(order by id) rn
           from flws_1)
  where rn between 1 and 2000

谢谢,这样分页也可以,但是效率并不比上面两种分页好
卖水果的net 2016-09-29
  • 打赏
  • 举报
回复

-- 使用 row_number 函数 

 select *
   from (select fybm, ah, wslb, wsnr, jar, row_number() over(order by id) rn
           from flws_1)
  where rn between 1 and 2000

cokroch 2016-09-29
  • 打赏
  • 举报
回复
顶一把,问题虽然无数,还是希望明白原理

17,137

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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