Oracle Rownum分頁改寫
專注于為中小企業(yè)提供成都網(wǎng)站制作、做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)港南免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
---說明:案例來自《 收獲,不止SQL優(yōu)化》
創(chuàng)建測試數(shù)據(jù):
---drop table test_rownum purge;
SQL > create table test_rownum as select * from dba_objects ;
SQL > select count (*) from test_rownum ; ---75793
SQL > alter session set statistics_level = all ;
SQL > set linesize 1000
SQL > set pagesize 500
分頁寫法 1 :
SQL > select * from ( select t. *, rownum as rn from test_rownum t ) a where a.rn >= 1 and a.rn <= 10 ;
查看執(zhí)行計劃:
SQL > select * from table ( dbms_xplan.display_cursor ( null , null , 'allstats last' ));
分頁寫法 2 :
SQL > select * from ( select t. *, rownum as rn from test_rownum t where rownum <= 10 ) a where a.rn >= 1 ;
查看執(zhí)行計劃:
SQL > select * from table ( dbms_xplan.display_cursor ( null , null , 'allstats last' ));
總結(jié): 寫法1的buffer為1080,掃描真實數(shù)據(jù)為75793條,寫法2的buffer只有5,掃描真實數(shù)據(jù)為10條,性能較寫法1有很大改善。
歡迎關(guān)注我的微信公眾號"IT小Chen",共同學(xué)習(xí),共同成長?。。?/strong>