分享三種高效率SQL語句分頁方法
更新時(shí)間:2011年09月09日 17:18:27 作者:
分享三種高效率SQL語句分頁方法,需要的朋友可以參考下。
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)頁的最小值,然后用TOP關(guā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è)表中有幾百萬條記錄時(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分頁(rownum函數(shù)使用方法介紹)
比方說要從表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,用來記錄每一條數(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)頁的最小值,然后用TOP關(guā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è)表中有幾百萬條記錄時(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分頁(rownum函數(shù)使用方法介紹)
比方說要從表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,用來記錄每一條數(shù)據(jù)所在的位置。
您可能感興趣的文章:
- 高效的SQLSERVER分頁查詢(推薦)
- mysql分頁原理和高效率的mysql分頁查詢語句
- sqlserver2005使用row_number() over分頁的實(shí)現(xiàn)方法
- MySQL 百萬級(jí)分頁優(yōu)化(Mysql千萬級(jí)快速分頁)
- SQL SERVER 2008 中三種分頁方法與比較
- mysql limit分頁優(yōu)化方法分享
- oracle,mysql,SqlServer三種數(shù)據(jù)庫的分頁查詢的實(shí)例
- php+mysql分頁代碼詳解
- Oracle實(shí)現(xiàn)分頁查詢的SQL語法匯總
- java分頁攔截類實(shí)現(xiàn)sql自動(dòng)分頁
相關(guān)文章
收藏的SQL知識(shí)以及SQL語句簡(jiǎn)單實(shí)踐通俗易懂
首先說明,這個(gè)筆者2年前學(xué)習(xí)SQL的遺漏下來的筆記,由于參加完騰訊的筆試,內(nèi)容比較偏向數(shù)據(jù)機(jī)構(gòu)和編譯以及數(shù)據(jù)庫,剛好要換臺(tái)本本,心里不想把它弄死在硬盤里,覺得蠻好的,所以把它都分享了2012-06-06
redis數(shù)據(jù)庫查找key在內(nèi)存中的位置的方法
這篇文章主要介紹了redis數(shù)據(jù)庫查找key在內(nèi)存中的位置的方法,需要的朋友可以參考下2014-03-03
RBAC簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了RBAC簡(jiǎn)介,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08

