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

  • 相关阅读:
    ‘Host’ is not allowed to connect to this mysql server
    centos7安装mysql
    further configuration avilable 不见了
    Dynamic Web Module 3.0 requires Java 1.6 or newer
    hadoop启动 datanode的live node为0
    ssh远程访问失败 Centos7
    Linux 下的各种环境安装
    Centos7 安装 python2.7
    安装scala
    Centos7 安装 jdk 1.8
  • 原文地址:https://www.cnblogs.com/DTWolf/p/4781680.html
Copyright © 2011-2022 走看看