分頁查詢就是把query
到的結果集按頁顯示。好比一個結果集有1W行,每頁按100條數據庫。而你獲取了第2頁的結果集。sql
若是一個結果集有幾十W行,那麼在一個頁面上顯示確定顯示不完。同時,顯示數據庫記錄是須要加載到內存的,而顯示大量數據是消耗內存更多。數據庫
咱們能夠爲了如下目的使用分頁查詢:spa
使用Oracle的EMP表code
select * from ( select rownum rn, e.* from ( select * from EMP) e );
結果以下:blog
分頁查詢源碼以下:內存
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
結果以下:
分頁查詢也能夠使用betwenn ... and ...
where rn = between (pageSize * (page - 1) + 1) and pageSize * page
可見分頁查詢是取某一範圍的結果集。