<noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"><delect id="ixm7d"></delect></rt><noframes id="ixm7d"><rt id="ixm7d"><rt id="ixm7d"></rt></rt><rt id="ixm7d"></rt> <noframes id="ixm7d"><rt id="ixm7d"><delect id="ixm7d"></delect></rt><delect id="ixm7d"></delect><bdo id="ixm7d"></bdo><rt id="ixm7d"></rt><bdo id="ixm7d"></bdo><noframes id="ixm7d"><rt id="ixm7d"><rt id="ixm7d"></rt></rt><rt id="ixm7d"><rt id="ixm7d"></rt></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt> <noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d">

Oracle數據庫分頁技術的應用

2022-09-14

一、前言

Oracle數據庫是一款關系型數據庫管理系統, 它支持大數據量的事務和分布式數據處理, 系統性能優越、可移植性好, 適用于各種不同的工作環境, 是一種高效率的數據庫解決方案。當開發數據庫應用軟件時, 經常會根據需求查詢限定行或分頁的數據, MySQL數據庫中可以使用LIMIT子句完成, MS Ssql Server數據庫中可以使用TOP子句完成, Oracle數據庫中如何實現類似的查詢工作呢[1,2]?

二、rownum偽列

Oracle提供了一個rownum的偽字段, 根據SQL查詢出的結果給每行分配一個邏輯編號, 所以SQL不同也就會導致最終rownum不同。

(一) 限定查詢行數

如果希望限定查詢結果集的前幾條數據, 通過rownum可以輕松實現。

示例:

--查找前10名學生的記錄

SELECT*FROM student WHERE rownum<=10;

(二) 分頁查詢

在數據庫應用系統中, 我們會經常使用到分頁功能, 如每頁顯示5條記錄, 查詢第2頁內容該如何查詢呢?

--錯誤查詢語句

SELECT*FROM student WHERE rownum>5 AND rownum<=10;

上面的SQL語句是否能查詢出我們想要的結果呢?

當student表中有20條記錄, 執行該SQL語句就會發現, 該結果查詢不出任何記錄。因為rownum是對查詢后的結果集添加的一個偽列。它總是默認從1開始的。因此, 如果想查詢類似rownum>5這種條件就需要先生成rownum, 然后再對生成結果進行查詢。

示例:

SELECT s2.*FROM (SELECT ROWNUM r, s1.*FROM student s1 WHERE ROWNUM<=10) s2 WHERE s2.r>5;

內層查詢語句小于等于要查詢頁數的最大條數, 外層查詢語句大于等于要查詢頁數的最小條數。

(三) rownum的使用限制

在查詢語句中, 不能對rownum使用>、>=、=這樣的查詢條件, 否則查詢不到我們想要的結果。在對非主鍵的字段執行order by子句時, 查詢結果并非按照我們所期望的先排序再取特定記錄數;而order by的字段是主鍵時才會先排序再計算rownum的值。

三、高復用分頁類Pagination.java

分業實現方式通常有兩種方式:一種是一次性讀入符合查詢條件的數據保存到內容中, 然后通過相關業務類實現分頁處理功能;另一種是根據客戶需求, 每次分別從數據庫中讀取指定數量的記錄。通常第二種方式的執行效率要高些[3]。

在實際開發分頁應用程序時, 我們通常封裝高復用的分頁類來實現分頁功能。該類封裝了分頁的頁面實現邏輯。程序代碼如下:

四、數據訪問層Dao的實現

以分頁查詢學生數據為例, 在設計數據訪問層Dao功能實現中, 調用pagination對象的set Count Size (rs.getInt (“counts”) ) 方法, 將數據庫中讀取的所有學生記錄數封裝到高復用分頁對象Pagination中, 然后通過pagination對象設置當前頁currPage和每頁顯示頁數pageSize屬性計算出當前頁要查詢記錄的起始和結束位置, 進而查詢出指定的結果集。示例代碼片段如下:

五、頁面控制層功能實現

當從前端頁面請求后端數據響應式, 會傳遞要查詢的指定數據 (包括要查詢的頁碼) 。通過數據訪問層Dao中定義的getAllStudents () 方法查詢出指定頁數的集合對象, 然后轉發到視圖頁面index.jsp顯示查詢結果。

六、結束語

本文通過Oracle數據庫中Rownnum偽關鍵字實現了通用數據庫分頁的方法, 相對于其他分頁技術的實現, 這種方法簡單靈活、實用性強, 在實際項目開發中得到了很好地應用。

摘要:Oracle數據庫分頁技術在應用程序開發中經常會使用到, 分頁查詢效率直接關系到應用系統地性能。本文介紹Oracle數據庫通用分頁技術的實現方法, 在實際項目應用過程中取得良好的效果。

關鍵詞:Oracle,分頁查詢,rownum

參考文獻

[1] 孫風棟, 閆海珍.Oracle10g數據庫海量數據分頁查詢優化[J].計算機應用與軟件, 2011 (9) :137-139.

[2] 張輝, 趙郁亮, 徐江, 等.基于Oracle數據庫海量數據的查詢優化研究[J].計算機技術與發展, 2012 (2) :165-167.

[3] 徐越人.OracleRownum的使用與JSP分頁顯示的實現[J].計算機與現代化, 2007 (10) :86-90.

本文來自 99學術網(www.gaojutz.com),轉載請保留網址和出處

上一篇:中小企業融資存在的問題和對策下一篇:傳統工藝美術的傳承與發展

91尤物免费视频-97这里有精品视频-99久久婷婷国产综合亚洲-国产91精品老熟女泄火