• SQL分页查询【转】


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

    方法1: 适用于 SQL Server 2000/2005

    复制代码
    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 2000/2005

    复制代码
     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的游标存储过程分页)    效率最差,但是最为通用

  • 相关阅读:
    PerfDog
    adb 常用操作
    netstat命令(net-tools)
    资源路径总结:
    四个作用域对象:
    jsp的 九大内置对象
    Jsp 的语法和指令
    JSP 学习
    server.xml 文件:
    Web.xml 文件使用总结:
  • 原文地址:https://www.cnblogs.com/wangchuang/p/3002041.html
Copyright © 2020-2023  润新知