新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > Web开发 > Asp教程 > 正文:SQL Server 2005: 利用新的ranking函数实现高效的数据分页操作

SQL Server 2005: 利用新的ranking函数实现高效的数据分页操作

新客网 XKER.COM 2005-01-21 来源: 收藏本文
最近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


收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐