分享三種高效率SQL語(yǔ)句分頁(yè)方法
更新時(shí)間:2011年09月09日 17:18:27 作者:
分享三種高效率SQL語(yǔ)句分頁(yè)方法,需要的朋友可以參考下。
1.如果有一個(gè)自動(dòng)增長(zhǎng)的id字段,則:
定義二個(gè)變量:Page,PageCount
Select top PageCount * From [tb_code] Where id>=(select min(id) from (select top (Page-1)*PageCount+1 id from [tb_code] order by id desc) as t) order by id desc
原理,根據(jù)ID計(jì)算出(Page-1)頁(yè)的最小值,然后用TOP關(guān)鍵字及可解決問(wèn)題。
2.SELECT TOP 10 id,username From [tb_code] where id not in
( SELECT TOP 20000 id FROM tb_code ORDER BY username)
優(yōu)點(diǎn):此方法可以根據(jù)表中的任一個(gè)字段排序,在一個(gè)表中有幾百萬(wàn)條記錄時(shí),仍有很高的效率,缺點(diǎn)是在大數(shù)據(jù)量的情況下效率略遜于第一種
3.SELECT TOP 10 id,username From
(SELECT TOP page*pagecount id, username FROM tb_code ORDER BY username)
DERIVEDTBL ORDER BY username DESC
優(yōu)點(diǎn):此方法可以根據(jù)表中的任一個(gè)字段排序.
缺點(diǎn)是效率最低
在SQL Server 2005中使用rownum分頁(yè)(rownum函數(shù)使用方法介紹)
比方說(shuō)要從表USER中查看第10到第20條之間的數(shù)據(jù),那么SQL是這樣實(shí)現(xiàn)的
SELECT * FROM (SELECT rownum rowcount,USER.* FROM USER) WHERE ROWCOUNT >=10 AND ROWCOUNT <20
其中函數(shù)ROWNUM,用來(lái)記錄每一條數(shù)據(jù)所在的位置。
定義二個(gè)變量:Page,PageCount
Select top PageCount * From [tb_code] Where id>=(select min(id) from (select top (Page-1)*PageCount+1 id from [tb_code] order by id desc) as t) order by id desc
原理,根據(jù)ID計(jì)算出(Page-1)頁(yè)的最小值,然后用TOP關(guān)鍵字及可解決問(wèn)題。
2.SELECT TOP 10 id,username From [tb_code] where id not in
( SELECT TOP 20000 id FROM tb_code ORDER BY username)
優(yōu)點(diǎn):此方法可以根據(jù)表中的任一個(gè)字段排序,在一個(gè)表中有幾百萬(wàn)條記錄時(shí),仍有很高的效率,缺點(diǎn)是在大數(shù)據(jù)量的情況下效率略遜于第一種
3.SELECT TOP 10 id,username From
(SELECT TOP page*pagecount id, username FROM tb_code ORDER BY username)
DERIVEDTBL ORDER BY username DESC
優(yōu)點(diǎn):此方法可以根據(jù)表中的任一個(gè)字段排序.
缺點(diǎn)是效率最低
在SQL Server 2005中使用rownum分頁(yè)(rownum函數(shù)使用方法介紹)
比方說(shuō)要從表USER中查看第10到第20條之間的數(shù)據(jù),那么SQL是這樣實(shí)現(xiàn)的
SELECT * FROM (SELECT rownum rowcount,USER.* FROM USER) WHERE ROWCOUNT >=10 AND ROWCOUNT <20
其中函數(shù)ROWNUM,用來(lái)記錄每一條數(shù)據(jù)所在的位置。
您可能感興趣的文章:
- 高效的SQLSERVER分頁(yè)查詢(推薦)
- mysql分頁(yè)原理和高效率的mysql分頁(yè)查詢語(yǔ)句
- sqlserver2005使用row_number() over分頁(yè)的實(shí)現(xiàn)方法
- MySQL 百萬(wàn)級(jí)分頁(yè)優(yōu)化(Mysql千萬(wàn)級(jí)快速分頁(yè))
- SQL SERVER 2008 中三種分頁(yè)方法與比較
- mysql limit分頁(yè)優(yōu)化方法分享
- oracle,mysql,SqlServer三種數(shù)據(jù)庫(kù)的分頁(yè)查詢的實(shí)例
- php+mysql分頁(yè)代碼詳解
- Oracle實(shí)現(xiàn)分頁(yè)查詢的SQL語(yǔ)法匯總
- java分頁(yè)攔截類實(shí)現(xiàn)sql自動(dòng)分頁(yè)
相關(guān)文章
收藏的SQL知識(shí)以及SQL語(yǔ)句簡(jiǎn)單實(shí)踐通俗易懂
首先說(shuō)明,這個(gè)筆者2年前學(xué)習(xí)SQL的遺漏下來(lái)的筆記,由于參加完騰訊的筆試,內(nèi)容比較偏向數(shù)據(jù)機(jī)構(gòu)和編譯以及數(shù)據(jù)庫(kù),剛好要換臺(tái)本本,心里不想把它弄死在硬盤(pán)里,覺(jué)得蠻好的,所以把它都分享了2012-06-06redis數(shù)據(jù)庫(kù)查找key在內(nèi)存中的位置的方法
這篇文章主要介紹了redis數(shù)據(jù)庫(kù)查找key在內(nèi)存中的位置的方法,需要的朋友可以參考下2014-03-03RBAC簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了RBAC簡(jiǎn)介,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08