表中主鍵必須為標識列,[id] int identity (1,1)
1、分頁方案一:(利用not in和select top分頁)
語句形式:
select top 10*
from 表
where(id not in
(select top20id
from 表
order by id)ast)
order by id
select top 頁記錄條數*
from 表
where(id not in
(select top 頁記錄數*頁數 id
from 表
order by id)ast)
order by id
2、分頁方案二:(利用id大於多少和select top分頁)
語句形式:
select top 10*
from testtable
where(id>
(selectmax(id)
from(selecttop20id
fromtesttable
orderbyid)ast))
orderbyid
selecttop頁大小*
fromtesttable
where(id>
(selectmax(id)
from(selecttop頁大小*頁數id
from表
orderbyid)ast))
orderbyid3、分頁方案三:(利用sql的游標儲存過程分頁)
create proceduresqlpager
@sqlstrnvarchar(4000),--查詢字串
@currentpageint,--第n頁
@pagesizeint--每頁行數
assetnocounton
declare@p1int,--p1是游標的id
@rowcountint
execsp_cursoropen@p1output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcountoutput
selectceiling(1.0*@rowcount/@pagesize)as總頁數--,@rowcountas總行數,@currentpageas當前頁
set@currentpage=(@currentpage-1)*@pagesize+1
execsp_cursorfetch@p1,16,@currentpage,@pagesize
execsp_cursorclose@p1
setnocountoff其它的方案:如果沒有主鍵,可以用臨時表,也可以用方案三做,但是效率會低。
建議優化的時候,加上主鍵和索引,查詢效率會提高。
以上三種方案的比較:
分頁方案二:(利用id大於多少和select top分頁)效率最高,需要拼接sql語句
分頁方案一:(利用not in和select top分頁) 效率次之,需要拼接sql語句
分頁方案三:(利用sql的游標儲存過程分頁) 效率最差,但是最為通用
4、方案四:
使用top
1.利用當前記錄號(currentnote)和分頁頁面大小(pagesize)進行分頁
create procdure getnextpageinfo2
@pagesize
int, --頁面記錄數
@currentnote
int --當前記錄號 as
declare @sql nvarchar(200)
set @sql=n'
select
top '+
convert(
varchar(10),@pagesize)+ '
* from 表 where 主鍵 > ' +
convert(
varchar(10),@currentnote)
execute
sp_executesql @sqlgo
2.利用本頁頁碼和分頁頁面大小進行分頁
create procdure getnextpageinfo
@pagesize int, --每頁記錄數
@page int --當前頁碼 as
declare @jilu big int
set @jilu=(@pagesize*@page)
declare @sql nvarchar(200)
set @sql=n'select top '+
convert(varchar(10),@pagesize)+ ' * from 表 where 主鍵 not in (select top ' +
convert(varchar(10),@jilu) + ' 主鍵 from 表 order by 主鍵) order by 主鍵'
execute
sp_executesql @sqlgo
兩種方式比較:第一種執行效率應該高於第二種,不過在id號多變的情況下第二種方法使用起來相對簡單。
2、 使用rowcount
sql語句實現分頁
sql語句實現分頁 sqlstr select top 10 from shebei where id not in select top cint pagenum 1 10 id from shebei order by id desc order by id desc 計算總頁數 dimstr ...
SQL 實現分頁查詢
原文 sql 實現分頁查詢 在查詢資料中,對於某些資料量過大,為了減少頁面上單頁的載入時間,我們常常會選擇分頁查詢,分頁查詢有很多方法,下面主要介紹兩種分頁方法。一.通過主鍵來實現分頁 1.資料庫背景.person表,id主鍵盤,自增1,varchar行name.2.裡面包含了10條資料。3.可以通...
sql 語句實現分頁
select top 每頁顯示的資料量 from 表名 where 主鍵或者其他字段 select isnull max 主鍵或者其他字段 0 from select top 每頁顯示的數量量 第幾頁 主鍵或者其他字段 from 表名 order by 主鍵或者其他字段 a order by 主鍵或...