SqlServer2005分頁方案

2021-06-16 04:50:13 字數 2717 閱讀 8486

**

--插入測試資料200w條,可能會很久

create

table

student(

id int

primary

keyidentity(1

,1),name

nvarchar(50

),age

int)

insert

student(name,age)

values('

name',

18)while

(select

count(*

) from

student)

<

2000000

insert

student

select

name,age

from

student

--開始測試查詢

declare

@now

datetime

--max方案

select

'max'方案

select

@now

=getdate

()--

begin

select

top10

*from

student

where

id>

(select

max(id)

from

(select

top1999990

id from

student

order

byid)tt)

--end

declare

@maxdiff

intselect

@maxdiff

=datediff

(ms,

@now

,getdate

())--

top方案

select

'top'方案

select

@now

=getdate

()--

begin

select

top10

*from

student

where

id notin(

select

top1999990

id from

student)

--end

declare

@topdiff

intselect

@topdiff

=datediff

(ms,

@now

,getdate

())--

row方案

select

'row'方案

select

@now

=getdate

()--

begin

select

*from

(select

row_number()

over

(order

bytc)rn,

*from

(select

top2000000

0tc,

*from

student)t

)ttwhere

rn>

1999990

--end

declare

@rowdiff

intselect

@rowdiff

=datediff

(ms,

@now

,getdate

())--

row_number方案

select

'row_number'方案

select

@now

=getdate

()--

begin

select

*from

(select

top2000000

row_number()

over

(order

byid)rn,

*from

student

)twhere

rn>

1999990

--end

declare

@row_numberdiff

intselect

@row_numberdiff

=datediff

(ms,

@now

,getdate

())--

記錄結果

select

'第20萬頁

'頁碼,

@maxdiff

max方案,

@topdiff

top方案,

@rowdiff

row方案,

@row_numberdiff

row_number方案

比較了3種分頁方式,分別是max方案,top方案,row方案

效率:第1:row

第2:max

第3:top

缺點:max:必須使用者編寫複雜sql,不支援非唯一列排序

top:必須使用者編寫複雜sql,不支援復合主鍵

row:不支援sqlserver2000

SQL Server 2005 分頁儲存過程

支援 多表連線查詢 group by分組查詢等。多表連線查詢時請指定字段,不要用select 返回為一結果集,有乙個輸出引數為記錄總數,配合 aspnetpager控制項使用絕配。create procedure web pager rowstotal intoutput,輸出記錄總數 tablen...

sqlserver2005 分頁 SQL語句

1.分頁方案一 利用not in和select top分頁 語句形式 select top 10 from testtable where id not in select top20id from testtable order by id order by id select top 頁大小 f...

SQL Server 2005分頁儲存過程

剛開始學習分頁儲存過程的時候看到有很多長篇大論的 看起來很亂,現在有乙個很好的分頁儲存過程,分享一下 alter procedure dbo pr page helper top int null,返回前n位記錄 1 全部 ascordesc bit null,1 desc 0 asc column...