码迷,mamicode.com
首页 > 数据库 > 详细

SQL Server 多种分页查询效率

时间:2015-09-04 15:40:51      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

关于SQL语句分页,网上也有很多,我贴一部分过来,并且总结自己已知的分页到下面,方便日后查阅。

方法1

适用于 SQL Server 任何版本

  1. SELECT TOP 页大小 *
  2. FROM table1
  3. WHERE id NOT IN
  4. (
  5. SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
  6. )
  7. ORDER BY id

 

方法2

适用于 SQL Server 任何版本

  1. --顺序写法:
  2. SELECT TOP 页大小 *
  3. FROM table1
  4. WHERE id >=
  5. (
  6. SELECT ISNULL(MAX(id),0)
  7. FROM
  8. (
  9. SELECT TOP (页大小*(页数-1)+1) id FROM table1 ORDER BY id
  10. ) A
  11. )
  12. ORDER BY id
  13.  
  14. --降序写法:
  15. SELECT TOP 页大小 *
  16. FROM table1
  17. WHERE id <=
  18. (
  19. SELECT ISNULL(MIN(id),0)
  20. FROM
  21. (
  22. SELECT TOP (页大小*(页数-1)+1) id FROM table1 ORDER BY id Desc
  23. ) A
  24. )
  25. ORDER BY id Desc

 

方法3

适用于 SQL Server 2005

  1. SELECT TOP 页大小 *
  2. FROM
  3. (
  4. SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
  5. ) A
  6. WHERE RowNumber > 页大小*(页数-1)

说明,页大小:每页的行数;页数:第几页。使用时,请把“页大小”和“页大小*(页数-1)”替换成数字。

其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。 建议优化的时候,加上主键和索引,查询效率会提高。

通过SQL 查询分析器,显示比较:我的结论是: 分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句 分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句 分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用

 

http://www.wxzzz.com/457.html

http://www.cnblogs.com/morningwang/archive/2009/01/02/1367277.html

SQL Server 多种分页查询效率

标签:

原文地址:http://www.cnblogs.com/DTWolf/p/4781680.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!