zoukankan      html  css  js  c++  java
  • 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的游标存储过程分页)    效率最差,但是最为通用

  • 相关阅读:
    Python xrange与range的区别返回的结果不一样
    matlab画立方体
    python查询数据类型
    Ubuntu下安装微信(electronic-wechat)
    python判断数组中是否有重复元素
    python构建数组
    Numpy中np.max(即np.amax)的用法
    你不知道C#只带有 get 访问器的属性是只读属性?
    Windows 平台安装配置 MongoDB
    一日一技:Ocelot网关使用IdentityServer4认证
  • 原文地址:https://www.cnblogs.com/wangchuang/p/3002041.html
Copyright © 2011-2022 走看看