久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

SQL Server 2005: 利用新的ranking函數實現高效的數據分頁操作

瀏覽:2日期:2023-10-30 18:49:08

最近MSDN Magazine上的一篇文章10 Tips for Writing High-Performance Web Applications提到了有效的數據分頁技術對提高ASP .NET程序性能的重要性;并給出了一個實現數據分頁的stored procedure的例子,抄錄如下:

CREATE PROCEDURE northwind_OrdersPaged

( @PageIndex int, @PageSize int)

ASBEGINDECLARE @PageLowerBound intDECLARE @PageUpperBound intDECLARE @RowsToReturn int-- First set the rowcountSET @RowsToReturn = @PageSize * (@PageIndex + 1)SET ROWCOUNT @RowsToReturn-- Set the page boundsSET @PageLowerBound = @PageSize * @PageIndexSET @PageUpperBound = @PageLowerBound + @PageSize + 1-- Create a temp table to store the select resultsCREATE TABLE #PageIndex ( IndexId int IDENTITY (1, 1) NOT NULL, OrderID int)-- Insert into the temp tableINSERT INTO #PageIndex (OrderID)SELECT OrderIDFROM OrdersORDER BY OrderID DESC-- Return total countSELECT COUNT(OrderID) FROM Orders-- Return paged resultsSELECT O.*FROM Orders O, #PageIndex PageIndexWHERE O.OrderID = PageIndex.OrderID AND PageIndex.IndexID > @PageLowerBound AND PageIndex.IndexID < @PageUpperBoundORDER BY PageIndex.IndexIDEND

在SQL Server 2000里面,由于沒有一個有效的進行ranking操作的方法,所以該例子先創建了一個有Identity字段的臨時表,利用Identity字段的自增長特性,間接的為Orders表的每一行按orderID逆序賦予了一個行號, 然后基于這個行號實現分頁。

在SQL Server 2000里面,由于系統提供了內建的ranking函數,為了給Orders表生成行號,我們不再需要利用Identity字段。

例如,利用SQL Server 2000的ROW_NUMBER()函數,按orderID字段逆序排列,給Orders表生成行號的語句如下:SELECT ROW_NUMBER() OVER(ORDER BY ordered DESC) AS rownum, ordered

FROM Orders

ORDER BY rownum DESC

基于這些新的ranking函數,您可以跟方便的實現數據的分頁操作。

關于SQL Server 2005的T-SQL新特性,見文檔:

http://msdn.microsoft.com/sql/archive/default.aspx?pull=/library/en-us/dnsql90/html/sql_05tsqlenhance.asp

標簽: Sql Server 數據庫
主站蜘蛛池模板: 常德市| 武威市| 鹤庆县| 和静县| 刚察县| 泸西县| 濮阳市| 梁平县| 桂林市| 盐源县| 应城市| 耿马| 包头市| 肇东市| 玛多县| 吉木萨尔县| 清镇市| 隆安县| 灵川县| 铅山县| 巢湖市| 永年县| 开封市| 广南县| 隆昌县| 东平县| 姚安县| 巫溪县| 桐梓县| 离岛区| 安多县| 扬州市| 安阳市| 麟游县| 西青区| 泸西县| 原阳县| 曲靖市| 巴彦县| 柳江县| 灵寿县|