今日朋友突然起我一个关于分页的问题,他问用top和row_number哪个快!我在实际执行计划里面看到Top用了99%的开销,而Row_number只用了1%但在执行时间却是Top快些,是否我的试验模拟数据有问题??执行计划和执行时间有什么关系吗??CREATE TABLE [dbo].[tb3](
[ID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[val] [int] NULL,)GO
insert tb3
select top(1000000) checksum(newid())
From sys.objects a,sys.objects b,sys.objects c
GO
declare @datetime datetimeset @datetime=getdate()
select top 20 *
from tb3
where id>(select max(id) from(select top 188010 id from tb3 order by id) as t)
order by idselect datediff(ms,@datetime,getdate())set @datetime=getdate()
select *
from(select * ,row_number() over(order by id) as row from tb3)a
where a.row between 188010 and 188030
select datediff(ms,@datetime,getdate())