1. 程式人生 > >oracle九百萬級的分頁sql優化

oracle九百萬級的分頁sql優化

先看看資料庫music表的大小:

SELECT count(1) from music
這裡寫圖片描述
優化之前的sql:

select * from (SELECT m.* ,ROWNUM rn from music m) m where m.rn>0 and m.rn<=20
執行結果:
[SQL]select * from (SELECT m.* ,ROWNUM rn from music m) m where m.rn>0 and m.rn<=20
受影響的行: 0
時間: 136.409s
這個分頁可以說是讓人頭痛了

優化之後的sql:

select * from (SELECT m.* ,ROWNUM rn from music m where ROWNUM<=20) WHERE rn>0
執行結果:
[SQL]select * from (SELECT m.* ,ROWNUM rn from music m where ROWNUM<=20) WHERE rn>0
受影響的行: 0
時間: 3.603s

只需要了三秒多,本人測試是連的wifi,比實際要慢很多,放到專案中基本只要1S左右的時間。