当前位置:Gxlcms > 数据库问题 > SQL Server 多种分页查询效率

SQL Server 多种分页查询效率

时间:2021-07-01 10:21:17 帮助过:2人阅读

  • FROM table1
  • WHERE id NOT IN
  • (
  • SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
  • )
  • 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 多种分页查询效率

    标签:

    人气教程排行