先看下表中共有多少条数据:
一百二十多万条,呵呵。
sql语句:
declare @d datetime set @d = getdate() select top 10 ID,U_Name,U_Age,U_Sex,U_Address from Test1 where ID not in (select top 9990 ID from Test1 order by ID) order by ID select [not in方法升序分页执行花费时间(毫秒)]=datediff(ms,@d,getdate()) declare @s datetime set @s = getdate() select top 10 ID,U_Name,U_Age,U_Sex,U_Address from Test1 where ID >=(select max(ID) from (select top 9991 ID from test1 order by ID) as T) order by ID select [Max方法升序分页执行花费时间(毫秒)]=datediff(ms,@s,getdate()) declare @t datetime set @t = getdate() select top 10 ID,U_Name,U_Age,U_Sex,U_Address from Test1 where ID not in (select top 9990 ID from Test1 order by ID desc) order by ID desc select [not in方法降序分页执行花费时间(毫秒)]=datediff(ms,@t,getdate()) declare @q datetime set @q = getdate() select top 10 ID,U_Name,U_Age,U_Sex,U_Address from Test1 where ID <=(select min(ID) from (select top 9991 ID from Test1 order by ID desc) as T) order by ID desc select [Min方法降序分页执行花费时间(毫秒)]=datediff(ms,@q,getdate())
分页效率一目了然!
两种方法的不同点之一就是计算第二个top中的值
not in 中计算公式为:
pgSize * (pgNo - 1)
max\min中计算公式为:
((pgNo-1)*pgSize+1)
pgNo为当前第几页,pgSize为每页几条数据。