现在的位置: 首页 > 综合 > 正文

转:SqlServer 数据分页的存储过程

2012年03月24日 ⁄ 综合 ⁄ 共 970字 ⁄ 字号 评论关闭
   通常用普通的SQL语句查询数据,在数据量少的情况下速度上没什么感觉,一旦数居量很大之后,速度会明显变慢,因为大量的数据在网络中传输会花掉不少的时间,如果使用了分页查询数据,只反回有用的数据,把不需要的数据排除后,传输速度会快很多,如下是一个SQL分页的存储过程,本过程是以SQL自带的 Northwind 数据库为例写的,可以根据自已的需要随意更改

CREATE PROCEDURE [GetCustomersDataPage]
@PageIndex
INT, --页号
@PageSize
INT, --页数
@RecordCount
INT OUT, --记录数
@PageCount
INT OUT --页数
AS
SELECT @RecordCount = COUNT(*) FROM Customers
SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize)

DECLARE @SQLSTR NVARCHAR(1000)

IF @PageIndex = 0 OR @PageCount <= 1
SET @SQLSTR ='SELECT TOP '+STR( @PageSize )+' CustomerID, CompanyName,Address,Phone FROM Customers ORDER BY CustomerID DESC'

ELSE IF @PageIndex = @PageCount - 1
SET @SQLSTR =' SELECT * FROM ( SELECT TOP '+STR( @RecordCount - @PageSize * @PageIndex )+' CustomerID, CompanyName,Address,Phone FROM Customers ORDER BY CustomerID ASC ) TempTable ORDER BY CustomerID DESC'

ELSE
SET @SQLSTR =' SELECT TOP '+STR( @PageSize )+' * FROM ( SELECT TOP '+STR( @RecordCount - @PageSize * @PageIndex )+' CustomerID, CompanyName,Address,Phone FROM Customers ORDER BY CustomerID ASC ) TempTable ORDER BY CustomerID DESC'

EXEC (@SQLSTR)

GO

抱歉!评论已关闭.