zoukankan      html  css  js  c++  java
  • SQL Server 多种分页查询效率

    关于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

  • 相关阅读:
    机器人平台框架Yarp
    Git常用使用技巧
    Qt 5.x 开发技巧
    ROS (Robot Operating System) 相关资料与文档
    图形图像技术在手游中的潜在应用
    【Jmeter】Jmeter参数化的几种方式
    【Jmeter】调试取样器(Debug Sampler)进行调试
    【jmeter】实现接口关联的两种方式:正则表达式提取器和json提取器
    【Jmeter】Jmeter安装配置教程
    【Jmeter】第一个接口测试案例
  • 原文地址:https://www.cnblogs.com/DTWolf/p/4781680.html
Copyright © 2011-2022 走看看