無為

          無為則可為,無為則至深!

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks

          微軟新的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的分頁效率低。



          凡是有該標志的文章,都是該blog博主Caoer(草兒)原創,凡是索引、收藏
          、轉載請注明來處和原文作者。非常感謝。

          posted on 2006-06-10 13:20 草兒 閱讀(4879) 評論(2)  編輯  收藏 所屬分類: DotNet

          Feedback

          # re: Microsoft SQL Server 2005 查詢分頁 2009-06-21 22:24 傲翔白鴿
          樓主我真不知道你是怎么測試的,我只是想說你的結果有待確認的.網上的分頁程序(也包括我自己寫的,在百萬條記錄的效果要超過你說的這種方法.  回復  更多評論
            

          # re: Microsoft SQL Server 2005 查詢分頁 2009-06-21 22:27 傲翔白鴿
          當然也不排除這種算法在特定的場合下比較快.  回復  更多評論
            

          主站蜘蛛池模板: 朝阳市| 衡南县| 大兴区| 合山市| 黔西| 三原县| 仁化县| 东乌珠穆沁旗| 兴文县| 河东区| 仪征市| 沂源县| 桓台县| 陇南市| 越西县| 德江县| 岑巩县| 黄冈市| 登封市| 建阳市| 集贤县| 长子县| 岚皋县| 遂宁市| 瑞昌市| 高尔夫| 仙桃市| 新河县| 海安县| 房产| 正阳县| 皮山县| 天门市| 天水市| 鄢陵县| 瑞丽市| 若羌县| 岳普湖县| 浙江省| 玉环县| 修水县|