轉:SqlServer 資料分頁的預存程序

來源:互聯網
上載者:User
   通常用普通的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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.