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

  • 相关阅读:
    Jenkins的安装
    nginx的正则
    nginx的详解(四)
    nginx的详解(三)
    nginx的详解(二)
    Linux基础(七)
    linux-syslog服务
    Django中使用Oracle数据库
    django-admin-simpleui
    closewait---文件描述符
  • 原文地址:https://www.cnblogs.com/DTWolf/p/4781680.html
Copyright © 2011-2022 走看看