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進行Crash RecoverySQLServer
- MySql/Oracle和SQL Server的分頁查MySqlOracleServer
- SQL Server如何配置cdc進行ETLSQLServer
- Oracle中的sql%rowcount在瀚高資料庫中的相容方案OracleSQL資料庫
- 如何進行SQL Server容災恢復WISQLServer
- Java -- 對List集合進行分頁Java
- mybatis-plus連線SQL Server2012分頁查詢異常MyBatisSQLServer
- 基於Sql server資料庫的四種分頁方式總結SQLServer資料庫
- SQL Server 2008中的行壓縮(上)JUSQLServer
- javaweb使用高德地圖進行網頁定位JavaWeb地圖網頁
- 聊聊如何利用p6spy進行sql監控SQL
- SQL Server 資料頁損壞修復SQLServer
- Python如何優化列表介面進行分頁Python優化
- SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008SQLServer
- 利用SQL Server Management Studio(SSMS)複製資料庫SQLServerSSM資料庫
- 如何使用PL/SQL進行分級查詢WPSQL
- SQL Server中GROUP BY(連結)SQLServer
- .sql檔案匯入到sql server中SQLServer
- 面試題——Mybatis是如何進行分頁的面試題MyBatis
- SQL 分頁儲存過程SQL儲存過程
- mybatis動態sql與分頁MyBatisSQL
- 億萬級分庫分表後如何進行跨表分頁查詢
- 進行SQL Server縱向擴充套件的必備條件KVSQLServer套件
- SQL Server 2012中新的T-SQL命令第二部分RMSQLServer
- 利用機器學習進行惡意程式碼分類機器學習
- 如何在您的Dock中更突出地對Mac App圖示進行分組MacAPP
- SQL Server 中的 ACID 屬性SQLServer
- sql server中巢狀事務*SQLServer巢狀
- 在 Visual Studio 中更好地進行搜尋
- .Net/C#分庫分表高效能O(1)瀑布流分頁C#
- SQL Server中使用臨時表進行資料備份與恢復SQLServer
- SQL Server 2012中新的T-SQL命令第一部分HWSQLServer
- cmd命令列下用命令執行SQL指令碼到SQL Server資料庫中命令列SQL指令碼Server資料庫
- TDengine 如何進行 SQL 寫入?官方最全教程來了SQL
- Android Paging分頁庫的學習(一)—— 結合本地資料進行分頁載入Android
- sql serverSQLServer
- 動態SQL-條件分頁SQL
- 統計分頁一些sqlSQL
- SQL Server 查詢歷史執行的SQL語句SQLServer