对四种分页方案进行测试

--直接调用下面的语句直接使用

--插入测试数据200w条,可能会很久
create table Student(
  Id int PRIMARY KEY identity(1,1),
  Name nvarchar(50),
  Age int
)
    go
declare @i int
set @i=1
while @i<=2000000
begin
insert into  Student(Name,Age)values('Name',18)
set @i=@i+1
end

go
--开始测试查询
declare @now datetime
--max方案 30
select 'max'方案
select @now=getdate()
--begin
select top 10 * from Student
where Id>(
  select max(Id)
  from (
    select top 1999990 Id from Student order by Id)tt)
--end
declare @maxDiff int
select @maxDiff=datediff(ms,@now,getdate())

--top方案 76
select 'top'方案
select @now=getdate()
--begin
select top 10 * from Student
where Id not in(select top  1999990 Id from Student)
--end
declare @topDiff int
select @topDiff=datediff(ms,@now,getdate())

--row方案 33
select 'row'方案  
select @now=getdate()
--begin
select *
from (
select row_number()over(order by tc)rn,*
from (select top 2000000 0 tc,* from Student)t
)tt
where rn>1999990
--end
declare @rowDiff int
select @rowDiff=datediff(ms,@now,getdate())

--row_number方案 13
select 'row_number'方案
select @now=getdate()
--begin
select *
from(
select top 200000 row_number()over(order by Id)rn,* from Student
)t
where rn>1999990
--end
declare @row_numberDiff int
select @row_numberDiff=datediff(ms,@now,getdate())

--记录结果
select '第2万页'页码,@maxDiff max方案,@topDiff top方案,@rowDiff row方案,@row_numberDiff row_number方案

--分析结果:只测试了两万

页码      max方案    top方案    row方案    row_number方案    -20 0000数据
第2万页    30       76        33        13

页码    max方案    top方案    row方案      row_number方案       -20 0000数据
第2万页    30      80      13          33

页码        max方案    top方案    row方案    row_number方案  -120 0000数据
第119999页    170        186     156     130

页码        max方案    top方案    row方案    row_number方案  -120 0000数据
第119999页    173      203       140      143

页码        max方案    top方案    row方案    row_number方案  -200 0000数据
第20 0000页    296      326      233      250

页码        max方案    top方案    row方案    row_number方案  -200 0000数据
第20 0000页    250      343      233      246

--加上排序测试

页码        max方案    top方案    row方案    row_number方案
第20 0000页    296      343      573      533

页码        max方案    top方案    row方案    row_number方案
第20 0000页    280      330      583      546

页码        max方案    top方案    row方案    row_number方案
第20 0000页    263      326      586      560

原文地址:https://www.cnblogs.com/Unrmk-LingXing/p/4058700.html