SQL Server中利用SET ROWCOUNT來高效能地進行分頁
SQL Server中有一個Set Rowcount的的設定,它的意思是使命令的處理在響應指定的行數之後停止處理命令,利用這個特點,我們可以借用它來在一個千萬行級資料表中實現高效能分頁查詢。先來說說實現方式:
1、我們來假定Table中有一個已經建立了索引的主鍵欄位ID(整數型),我們將按照這個欄位來取資料進行分頁。
2、頁的大小我們放在@PageSize中
3、當前頁號我們放在@CurrentPage中
4、如何讓記錄指標快速滾動到我們要取的資料開頭的那一行呢,這是關鍵所在!有了Set RowCount,我們就很容易實現了。
5、如果我們成功地滾動記錄指標到我們要取的資料的開頭的那一行,然後我們把那一行的記錄的ID欄位的值記錄下來,那麼,利用Top和條件,我們就很容易的得到指定頁的資料了。當然,有了Set RowCount,我們難道還用Top麼?
看看Set Rowcount怎麼來幫我們的忙吧:
Declare @ID int
Declare @MoveRecords int
--@CurrentPage和@PageSize是傳入引數
Set @MoveRecords=@CurrentPage * @PageSize+1
--下面兩行實現快速滾動到我們要取的資料的行,並把ID記錄下來
Set Rowcount @MoveRecords
Select @ID=ID from Table1 Order by ID
Set Rowcount @PageSize
--最恨為了減少麻煩使用*了,但是在這裡為了說明方便,暫時用一下
Select * From Table1 Where ID>=@ID Order By ID
Set Rowcount 0
大家可以試試看,在一個1千W記錄的表裡面,一下子方翻頁到第100頁(每頁100條),看看有多快!
因為平常 倒序 排的比較多,上面也很好改。
將 Order by ID 改成 Order by ID DESC
將 Where ID>=@ID Order By ID 改成 Where ID<=@ID Order By ID DESC
就可以了.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-675620/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server中@@ROWCOUNT的用法SQLServer
- Oracle中的sql%rowcountOracleSQL
- 分頁procedure (SQL Server)SQLServer
- SQL SERVER分頁演算法SQLServer演算法
- 基於ROWCOUNT的分頁儲存過程儲存過程
- Yii1.1中通過Sql查詢進行的分頁操作SQL
- SpringMVC中利用@InitBinder來對頁面資料進行解析繫結SpringMVC
- 用SQL Server來進行會話狀態管理SQLServer會話
- oracle中的sql%rowcount(R2)OracleSQL
- SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNTSQL
- [SQL Server]分頁功能的實現SQLServer
- 利用Ring Buffer在SQL Server 2008中進行連線故障排除SQLServer
- SQL Server進行Crash RecoverySQLServer
- sql%notfound、sql%rowcount和returnSQL
- MySql/Oracle和SQL Server的分頁查MySqlOracleServer
- Sql Server系列:查詢分頁語句SQLServer
- (SQL Server)分頁的儲存過程SQLServer儲存過程
- SQL SERVER中的頁和區SQLServer
- [zt] 利用 SQL Server 中的 Linked Server 執行 Oracle 中之預儲函式、程式SQLServerOracle函式
- 簡單談基於SQL SERVER 分頁儲存過程的演進SQLServer儲存過程
- 在SQL Server中對檢視進行增刪改SQLServer
- 分頁語法 FOR SQL SERVER 2012SQLServer
- SQL Server如何配置cdc進行ETLSQLServer
- SQL Server中對圖片進行儲存和輸出SQLServer
- SQL Server的分頁優化及Row_Number()分頁存在的問題SQLServer優化
- SQL SERVER 2005分頁儲存過程SQLServer儲存過程
- javaweb使用高德地圖進行網頁定位JavaWeb地圖網頁
- Java -- 對List集合進行分頁Java
- SQL%ROWCOUNT的簡要說明SQL
- MySQL、Oracle和SQL Server的分頁查詢語句MySqlOracleServer
- SQL Server 2005快速Web分頁的實現SQLServerWeb
- SQL Server 儲存過程的經典分頁(轉)SQLServer儲存過程
- 利用機器學習進行惡意程式碼分類機器學習
- 利用百度地圖進行地圖定位並實時上傳地圖
- Oracle中的sql%rowcount在瀚高資料庫中的相容方案OracleSQL資料庫
- oracle 使用rownum進行分頁的陷阱Oracle
- Sql Server 2005 row_number()分頁效能測試SQLServer
- SQL Server SQL語句進行優化的基本原則SQLServer優化