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

server|分页|函数|数据

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

时间: 2024-11-03 21:17:53

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

sql server 2005中新增加的try catch学习

server sql server 2005中新增加的try catch,可以很容易捕捉异常了,今天大概学习看了下,归纳下要点如下 基本用法BEGIN TRY     {  sql_statement |  statement_block  }END TRYBEGIN CATCH     {  sql_statement |  statement_block }END CATCH,和普通语言的异常处理用法差不多,但要注意的是,SQL SERVER只捕捉那些不是严重的异常,当比如数据库不能连接等这

sql server 2005开发版本与企业版之间,导入导出数据会不会发生什么错误

问题描述 sql server 2005开发版本与企业版之间,导入导出数据会不会发生什么错误 sql server 2005开发版本与企业版之间,导入导出数据会不会发生什么错误. Xp好像安装不了企业版,好像是可以安装开发版的.

SQL Server 2005新特性

一.企业级数据管理 在当今的互联世界中,数据和管理数据的系统必须始终为用户可用且能够确保安全,有了SQL Server 2005,组织内的用户和IT专家将从减少应用程序宕机时间.提高可伸缩性及性能.更紧密的安全控制中获益.SQL Server 2005 也包括了很多新的和改进的功能来帮助企业的IT团队更有效率的工作.SQL Server 2005 包括了几个在企业级数据管理中关键的增强: 易管理 可用性 可伸缩性 安全性 1.易管理 SQL Server 2005 能够更为简单的部署.管理和优化

SQL Server 2005 MD5函数

原文:SQL Server 2005 MD5函数 在SQL Server 2005下自带的函数HashBytes() ,此函数是微软在SQL Server 2005中提供的,可以用来计算一个字符串的MD5和SHA1值,使用方法如下: --获取123456的MD5加密串 select hashbytes('MD5', '123456') ; --获取123456的SHA1加密串 select hashbytes('SHA1', '123456') ; 有了这个函数可以在SQL Server中为字符

在SQL Server 2005中用XQuery分解XML数据

本文讨论SQL Server 2005的新功能,它允许你将XML数据分解到关系格式中,而不必耗用太多内存.我们首先了解一下XQuery和它在SQL Server 2005中为开发者提供的功能. XQuery介绍 XQuery,也称作XML Query,是一种查询XML数据的语言,允许你提取所需的节点和元素.它由W3C定义,可用于今天的大多数主流数据库引擎中,如Oracle.DB2和SQL Server. SQL Server 2005 XQuery函数 下面的四个函数是SQL Server 20

SQL Server 2005数据库开发概述

本文讨论了一些SQL Server 2005的新特性,这些新特性将帮助你创建一个新型的数据库应用程序. 随着Microsoft SQL Server 2005 Beta 2的发布,数据库开发的方式正在改变中.作为一个数据库开发人员,现在你可以更好的把工作关注在功能.对本机格式的数据的访问(如XML).以及利用强大的数据库服务器创建更复杂的系统上.数据库开发工作正前所未有的越来越集成,你所需要的所有工具都触手可及. .NET Framework集成 随着Microsoft SQLServer200

SQL Server 2005你了解多少?

 很多人关心的和担心的都是SQL Server 2005 相对它的前版本SQL Server 2000所做的重大改进或新增功能. 在我升级到SQL2005之后,不得不说的:你也值得拥有.(套用一句广告语,呵呵) 我总结了一下个人认为SQL Server 2005 中最值得你为之升级的10 个理由.无论你是想了解或学习SQL Server 2005,还是正在评估或考虑升级到SQL Server 2005,我相信当时你看完这篇帖子一定会对你的决定起到参考作用. 升级理由一:数据分区 只有到了2005

修改SQL Server 2005执行环境

执行环境是SQL Server中设定用户权限的认证方式,例如,当您登录到SQL Server的时候,登录账户就被赋予了一定的权限,其中可能包括登录的功能.访问数据库以及在数据库中执行某些操作的功能. SQL Server 2005包含了EXECUTE AS语句,通过使用EXECUTE AS语句,您可以为批处理和过程转换执行环境,这样,调用该批处理或过程的用户就可以使用不同的权限来操作了. 所有权链 在我正式讲解SQL Server 2005中执行环境的问题之前,先来简单地说说所有权链的工作原理.

了解SQL Server 2005五个有用的动态管理对象

SQL Server 2005的新功能为动态管理对象,它们是在指定时间返回某个数据库实例的特殊状态信息的数据库视图或函数.这些对象允许数据库管理员或开发者对数据库服务器进行高效监控.动态管理对象取代了SQL Server以前版本中的许多系统表格,但也为数据库管理员提供更多观测手段. 服务器上需要监控的内容,几乎都有对应的动态管理对象.既然有这么多动态管理对象,在这篇文章中逐一进行讨论是不实际的.例如,共有12类动态管理对象,但这里我主要讨论我认为相当重要的五个对象,它们分别来自与SQL Serv