你上面的两种分页措施实现的功能是不同的: 1、第一种分页是系统存储的自然分页,没有按照那个字段排序后再分页, 第二种是按照bh排序后的实现的分页; 2、第一种分页返回了所有的结果集, 第二种仅仅返回了bh。 如果仅仅实现一次分页,第二种的效率要高,但是如果实现很多次的分页, 即: set @i = 1 while (@i < 1000) begin exec sp_cursorfetch @P1, 16, @filterCount, @pageSize set @filterCount = @filterCount + @pageSize set @i = @i + 1 end 与 set @i = 1 while (@i < 1000) begin --当然要写成动态语句 select top 10 bh from table where bh not in (select top 10 * i bh from table order by bh) order by bh set @i = @i + 1 end 比较起来,好像第一种的效率要高。如果实现同样的功能,通常情况下游标的效率要低一些,最典型的例子是: truncate table table1 和 delete from table1。
1、第一种分页是系统存储的自然分页,没有按照那个字段排序后再分页,
第二种是按照bh排序后的实现的分页;
2、第一种分页返回了所有的结果集,
第二种仅仅返回了bh。
如果仅仅实现一次分页,第二种的效率要高,但是如果实现很多次的分页,
即:
set @i = 1
while (@i < 1000) begin
exec sp_cursorfetch @P1, 16, @filterCount, @pageSize
set @filterCount = @filterCount + @pageSize
set @i = @i + 1
end
与
set @i = 1
while (@i < 1000) begin
--当然要写成动态语句
select top 10 bh from table where
bh not in (select top 10 * i bh from table order by bh) order by bh
set @i = @i + 1
end
比较起来,好像第一种的效率要高。如果实现同样的功能,通常情况下游标的效率要低一些,最典型的例子是:
truncate table table1
和
delete from table1。