Sql Server 2005 ROW_NUMBER 函数实现分页

Sql Server 2005 ROW_NUMBER 函数实现分页,第1张

概述过去用SQL Server 2000分页的,大多都用到了临时表。SQL Server 2005 ROW_NUMBER 函数支持分页,性能据说也非常不错。

Paging Records Using S 过去用sql Server 2000分页的,大多都用到了临时表。sql Server 2005 ROW_NUMBER 函数支持分页,性能据说也非常不错。

Paging Records Using SQL Server 2005 Database
Paging in SQL Server 2005
Sql Server 2005自定义分页

最近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 2005里面,由于系统提供了内建的ranking函数,为了给Orders表生成行号,我们不再需要利用IDentity字段。

例如,利用sql Server 2005的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 2005 ROW_NUMBER 函数实现分页 全部内容,希望文章能够帮你解决Sql Server 2005 ROW_NUMBER 函数实现分页 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1151133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存