|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
最近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函数,您可以跟方便的实现数据的分页操作。 返回类别: 教程 上一教程: REQUIRE()和INCLUDE()的区别 下一教程: XML文件导入SQL SERVER 2000 您可以阅读与"SQL SERVER 2005: 利用新的RANKING函数实现高效的数据分页操作"相关的教程: · 一个高效的数据分页的存储过程 可以轻松应付百万数据 · SQL SERVER 中易混淆的数据类型 · SQL SERVER 2005:数据类型最大值 · 使用SQL Server 7.0建立一个安全的数据库的最好方式是 · SQL Server中格式化表中的数据 |
| 快精灵印艺坊 版权所有 |
首页 |
||