什么是分頁查詢
分頁查詢就是把query到的結(jié)果集按頁顯示。比如一個(gè)結(jié)果集有1W行,每頁按100條數(shù)據(jù)庫。而你獲取了第2頁的結(jié)果集。
為什么要分頁查詢
如果一個(gè)結(jié)果集有幾十W行,那么在一個(gè)頁面上顯示肯定顯示不完。同時(shí),顯示數(shù)據(jù)庫記錄是需要加載到內(nèi)存的,而顯示大量數(shù)據(jù)是消耗內(nèi)存更多。
我們可以為了以下目的使用分頁查詢:
- 為了精確定位結(jié)果集的內(nèi)容
- 為了節(jié)約內(nèi)存
- 為了在有限的頁面空間顯示適度的數(shù)據(jù)。
如何實(shí)現(xiàn)分頁查詢
使用Oracle的EMP表
select * from
( select rownum rn, e.* from
( select * from EMP) e
);
結(jié)果如下:
分頁查詢?cè)创a如下:
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行記錄)
頁面從第1頁開始。
我們要查詢第2頁的記錄,那么page = 2。
那么第2頁是由第6,7,8,9,10行記錄形成的。
select * from
( select rownum rn, e.* from
( select * from EMP) e
)
where rn > 5 and rn = 10
結(jié)果如下:
分頁查詢也可以使用betwenn ... and ...
where rn = between (pageSize * (page - 1) + 1) and pageSize * page
可見分頁查詢是取某一范圍的結(jié)果集。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
您可能感興趣的文章:- oracle,mysql,SqlServer三種數(shù)據(jù)庫的分頁查詢的實(shí)例
- Oracle實(shí)現(xiàn)分頁查詢的SQL語法匯總
- Oracle、MySQL和SqlServe三種數(shù)據(jù)庫分頁查詢語句的區(qū)別介紹
- Oracle分頁查詢性能優(yōu)化代碼詳解
- Oracle分頁查詢的實(shí)例詳解
- mysql、mssql及oracle分頁查詢方法詳解
- 詳解SQLServer和Oracle的分頁查詢
- 詳解oracle分頁查詢的基礎(chǔ)原理
- oracle實(shí)現(xiàn)一對(duì)多數(shù)據(jù)分頁查詢篩選示例代碼
- Oracle使用MyBatis中RowBounds實(shí)現(xiàn)分頁查詢功能