zoukankan      html  css  js  c++  java
  • Microsoft SQL Server 2005 查询分页

    微软新的SQL Server 2005新增了数据库分页功能,以后再也用写复杂不灵活而低效率的分页存储过程。
    新的数据库分页功能的核心是一个叫row_number的函数
    具体如下:

    返回结果集分区内行的序列号,每个分区的第一行从 1 开始。

    语法
     
    ROW_NUMBER ( )     OVER ( [ <partition_by_clause> ] <order_by_clause> )

    备注
    ORDER BY 子句可确定在特定分区中为行分配唯一 ROW_NUMBER 的顺序。

    参数
    <partition_by_clause>

    将 FROM 子句生成的结果集划入应用了 ROW_NUMBER 函数的分区。

    <order_by_clause>

    确定将 ROW_NUMBER 值分配给分区中的行的顺序。有关详细信息,请参阅 ORDER BY 子句 (Transact-SQL)。

    有关详细信息,请参阅 OVER 子句 (Transact-SQL)。

    返回类型
    bigint

    示例
    以下示例将根据年初至今的销售额,返回 AdventureWorks 中销售人员的 ROW_NUMBER。

     复制代码
    USE AdventureWorks
    GO
    SELECT c.FirstName, c.LastName, ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS 'Row Number', s.SalesYTD, a.PostalCode
    FROM Sales.SalesPerson s JOIN Person.Contact c on s.SalesPersonID = c.ContactID
    JOIN Person.Address a ON a.AddressID = c.ContactID
    WHERE TerritoryID IS NOT NULL AND SalesYTD <> 0

    以下示例将返回行号为 50 到 60(含)的行,并以 OrderDate 排序。

     复制代码
    USE AdventureWorks;
    GO
    WITH OrderedOrders AS
    (SELECT SalesOrderID, OrderDate,
    ROW_NUMBER() OVER (order by OrderDate)as RowNumber
    FROM Sales.SalesOrderHeader )
    SELECT *
    FROM OrderedOrders
    WHERE RowNumber between 50 and 60; 

    ==============================
    进过我对百万行数据记录的分页测试,效率比以前网上能够找到的最好的存储过程(个人意见)稍高。
    但是还是比同样的Oralce的分页效率低。

  • 相关阅读:
    常用的CSS命名规则 (web标准化设计)
    有哪些概率论和数理统计的深入教材可以推荐?
    CV2X国内现状分析
    隐私计算,新能源汽车“安全上路”的“救命稻草”?
    2022年中国车联网行业全景图谱
    2022年十大AI预测:气候独角兽涌现、中美竞争加剧
    OSEK/VDX介绍
    Adaptive Autosar
    基于我国商密算法的车联网5GV2X通信安全可信体系
    行研篇 | 汽车域控制器研究
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2104313.html
Copyright © 2011-2022 走看看