通常用普通的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