奚科芳

摘要:在應用程序的開發中經常要用到各類關系數據庫,本文主要闡述了目前流行的關系數據庫ORACLE數據庫、My SQL數據庫、SQL Server數據庫常用實現分頁的方法。
關鍵詞:ORACLE;My SQL;SQL Server;實現分頁
中圖分類號:TP311.13 文獻標識碼:A 文章編號:1007-9416(2020)01-0044-02
0 引言
不管在PC Web開發還是在移動Web開發中幾乎都要用到數據庫,為了方便美觀的展示數據,使用分頁是必不可少的一項技術。本文主要講述了當前常用關系數據庫ORACLE數據庫、My SQL數據庫、SQL Server數據庫實現分頁方法。
目前普通使用的關系數據庫有ORACLE,My SQL,SQL Server,這三種數據庫在實現分頁時其分頁查詢語句又有差別,但在應用程序調用時,給出的參數基本都是相同的。已知當前頁號和每頁顯示記錄數,那需要考慮起始記錄數和結束記錄數與頁碼與每頁顯示的記錄之間關系。各參數關系分析如下:
pageSize ? ?-- 用來表示每頁要顯示的記錄數,可提前給定
currentPage ? ?-- 用來表示當前頁的變量,可提前給定
start? ? ? ?-- 用來表示從那一條記錄開始顯示,需計算
end? ? ? ? ?-- 用來表示那一條記錄結束顯示,需計算
start=(currentPage-1)*pageSize -- 開始顯示的查詢記錄條數計算公式
end=currentPage*pageSize -- 結束顯示的查詢記錄條數計算公式
存在關系模式emp(empno,ename,job,hiredate,sal,comm,deptno),其表示員工表中包括的字段有:員工編號、員工姓名、崗位、入職日期、月薪、獎金、部門編號。其表信息見表1。
1 Oracle數據庫實現分頁
1.1 思路
ROWNUM是一個偽例,可以返回結果集的順序號,在SQL查詢語句中用它可以控制查詢的起始記錄條數和終止條數,在應用程序開發過程中只需將起始條數和終止條數作為專門的分頁sql語句傳入即可查詢出想要的結果。以查詢顯示員工表中第“start”條到“end”條記錄為例。
1.2 相關sql格式
以上SQL查詢語句存在錯誤,因為ROWNUM只能執行<、<=運算,不能執行>、>=或一個區間運算Between…and等。另ROWNUM和ORDER BY一起使用時,因為ROWNUM在記錄輸出時生成,而ORDER BY子句在最后執行,所以當兩者在一起使用時,其ROWNUM實際是已經被排了序的ROWRUM。
1.4 常用通用sql分頁格式
2.1 思路
“Top記錄數”表示可以顯示前多少記錄數的信息。先取前currentPage頁記錄,然后倒序,取倒序后前pageSize條記錄,這樣就能得到分頁所需要的數據,不過順序反了,之后可以將再倒序回來,也可以不再排序了,直接交給前端排序。
2.2 常用通用sql分頁格式
3.1 思路
MySQL有個專門針對查詢出一段數據的語句limit,使用起來非常的方便。
上面查詢中LIMIT? start,pagesize代表從第start條(不包含第2條)數據開始查詢出pagesize條記錄。
3.2 通用sql分頁格式
4 結語
每種數據庫都有它自己的優點及局限性,適用于不同的要求范圍,每種數據庫實現分頁的方法有多種,本文重點講述了三種數據庫最通用、效率相對高的分頁方法,Oracle數據庫利用ROWNUM偽列來實現分頁,SQL Server數據庫利用TOP來實現分頁,My SQL數據庫利用LIMIT來直接實現分頁,其中分頁實現起來最簡單的是My SQL數據庫。
參考文獻
[1] 孫風棟,閆海珍.Oracle 10g數據庫海量數據分頁查詢優化[J].計算機應用與軟件,2011(9):137-139.
[2] 張輝,趙郁亮,徐江,等.基于Oracle數據庫海量數據的查詢優化研究[J].計算機技術與發展,2012(2):165-167.
[3] 徐越人.Oracle Rownum的使用與JSP頁顯示的實現[J].計算機與現代化,2007(10):86-90.
[4] 齊心.Oracle數據庫分頁技術的應用[J].智庫時代,2019(14):221+226.