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

帅哥喜欢帅锅

帅哥喜欢帅锅

2016-01-29 16:22

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

    最近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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/sqlserver/)

    在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函数,您可以跟方便的实现数据的分页操作。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/sqlserver/)

关于SQL Server 2005的T-SQL新特性,见文档:

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

 
展开更多 50%)
分享

猜你喜欢

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

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

如何实现SQL Server 2005快速web分页

SQLServer
如何实现SQL Server 2005快速web分页

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

SQL Server 2005中XML操作函数详解

Web开发
SQL Server 2005中XML操作函数详解

SQL2005 高效分页sql语句

编程语言 网络编程
SQL2005 高效分页sql语句

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

探讨SQL Server 2005的评价函数

SQLServer
探讨SQL Server 2005的评价函数

分页存储过程(一)使用sql2005的新函数构造分页存储过程

编程语言 网络编程
分页存储过程(一)使用sql2005的新函数构造分页存储过程

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《瓦里奥》百科知识

《瓦里奥》百科知识

Ping不通 缓存在作怪

Ping不通 缓存在作怪
下拉加载更多内容 ↓