用簡單的例子解釋Oracle分頁查詢

什麼是分頁查詢

分頁查詢就是把query到的結果集按頁顯示。好比一個結果集有1W行,每頁按100條數據庫。而你獲取了第2頁的結果集。sql

爲何要分頁查詢

若是一個結果集有幾十W行,那麼在一個頁面上顯示確定顯示不完。同時,顯示數據庫記錄是須要加載到內存的,而顯示大量數據是消耗內存更多。數據庫

咱們能夠爲了如下目的使用分頁查詢:spa

  • 爲了精肯定位結果集的內容
  • 爲了節約內存
  • 爲了在有限的頁面空間顯示適度的數據。

如何實現分頁查詢

使用Oracle的EMP表code

select * from 
         ( select rownum rn, e.* from 
                           ( select * from EMP) e 
         );

結果以下:blog

image-20191115204015710.png

分頁查詢源碼以下:內存

select * from 
         ( select rownum rn, e.* from 
                           ( select * from EMP) e 
         )
where rn > pageSize * (page - 1) and rn <= pageSize * page

分析源碼:源碼

咱們選定每頁(pageSize)爲5。那麼EMP表目前共有三頁,1~5行爲1頁;6~10行爲1頁;1~15行爲1頁(缺第15行,那麼第3頁就顯示4行記錄)it

頁面從第1頁開始。class

咱們要查詢第2頁的記錄,那麼page = 2。select

where rn > 5 and rn <= 10

那麼第2頁是由第6,7,8,9,10行記錄造成的。

select * from 
         ( select rownum rn, e.* from 
                           ( select * from EMP) e 
         )
where rn > 5 and rn <= 10

結果以下:
image-20191115204450422.png

分頁查詢也能夠使用betwenn ... and ...

where rn = between (pageSize * (page - 1) + 1) and pageSize * page

可見分頁查詢是取某一範圍的結果集。

相關文章
相關標籤/搜索