第一種分頁是我最早學過的分頁
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;
第二種方法不需要討論,這里我只想弄清楚,傳統的分頁到底什么原因導致回傳最后會卡頓?
請各位大神幫忙分析下

uj5u.com熱心網友回復:
頂一把
,問題雖然無數,還是希望明白原理
uj5u.com熱心網友回復:
-- 使用 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
uj5u.com熱心網友回復:
謝謝,這樣分頁也可以,但是效率并不比上面兩種分頁好
uj5u.com熱心網友回復:
你看執行計劃了嗎,貼一下;
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
有可以qq 討論交流的嗎?597392453
這樣帖子好慢~
uj5u.com熱心網友回復:
把最前面的 Description 展開吧,都看不到說明了;轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/116408.html
標籤:開發
下一篇:oracle如何判斷表已經滿了
