Sql Server的高效分页方式。

在大数据量的前提下,我们不能直接查询所有的数据,并放到gridview里面进行分页,所以我们能做的只能是在数据库端进行分页。
由于Sql Server没有提供rownumber, 也没有提供类似limit的语法。
但是有rowcount ,ok,我们就用这个。

1.数据表需要有一个唯一的字段。当然要使用rowcount,那么就必须要有ID了,否则就需要创建临时表来解决这个问题了.
2.
采用:
set rowcount 100; //这里的100 ,是排除掉前面的100行 ,100 = @pagesize * (@currentPage - 1) + 1
select @lastid = id from tabledemo [where ... group by ....] order by id.
注意: 这里是oder by id ,自然是升序排列。

3.
set rowcount 20; // 20 = @pagesize
select * from tabledemo where id >= @lastid order by id ;
注意:这里的必须要有order by id,且排序方式必须跟前面的一致。否则取出来的数据可能不一致。

这样就实现了分页。
目前采用rowcount的分页方式,效率是最高的。
参见codeproject上的评测文章:
http://www.codeproject.com/KB/aspnet/PagingLarge.aspx

别人封装好的sp:
Code
posted @ 2009-08-15 12:50  无尽思绪  阅读(1153)  评论(4编辑  收藏  举报