国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

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

2024-08-31 00:50:40
字體:
來源:轉載
供稿:網友

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

CREATE PROCEDURE northwind_OrdersPaged

(
    @PageIndex int,
    @PageSize int
)

AS
BEGIN
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
DECLARE @RowsToReturn int
-- First set the rowcount
SET @RowsToReturn = @PageSize * (@PageIndex + 1)
SET ROWCOUNT @RowsToReturn
-- Set the page bounds
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageLowerBound + @PageSize + 1
-- Create a temp table to store the select results
CREATE TABLE #PageIndex
(
    IndexId int IDENTITY (1, 1) NOT NULL,
    OrderID int
)
-- Insert into the temp table
INSERT INTO #PageIndex (OrderID)
SELECT
    OrderID
FROM
    Orders
ORDER BY
    OrderID DESC
-- Return total count
SELECT COUNT(OrderID) FROM Orders
-- Return paged results
SELECT
    O.*
FROM
    Orders O,
    #PageIndex PageIndex
WHERE
    O.OrderID = PageIndex.OrderID AND
    PageIndex.IndexID > @PageLowerBound AND
    PageIndex.IndexID < @PageUpperBound
ORDER BY
    PageIndex.IndexID
END

    在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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新丰县| 新竹市| 诏安县| 万源市| 阜新市| 河北省| 综艺| 安达市| 潮州市| 西城区| 古浪县| 格尔木市| 咸宁市| 特克斯县| 专栏| 荆州市| 宝应县| 镇赉县| 丰宁| 汨罗市| 兴安盟| 华蓥市| 泗洪县| 富宁县| 四会市| 广河县| 辽中县| 洛宁县| 金阳县| 烟台市| 天等县| 金乡县| 新龙县| 淮北市| 井冈山市| 嘉善县| 永兴县| 宜兰县| 宜兰县| 高雄县| 阿拉尔市|