SQL Server數據庫中分頁編號的另一種方式
文章主要介紹了SQL Server 分頁編號的另一種方式,需要的朋友可以參考下今天看書講T-SQL,看到了UNBOUNDED PRECEDING,就想比對下ROW_NUMBER()的運行速度。...
文章主要介紹了SQL Server 分頁編號的另一種方式,需要的朋友可以參考下

今天看書講T-SQL,看到了UNBOUNDED PRECEDING,就想比對下ROW_NUMBER()的運行速度。
sql及相關的結果如下,數據庫中的數據有5W+。
- ROW_NUMBER():
- SET- STATISTICS- TIME- ON
- SELECT
- ROW_NUMBER() OVER(- ORDER- BY- Id- DESC- ) rn,Id
- FROM
- dbo.T_MyCourse
運行結果

?
- UNBOUNDED PRECEDING
- SET- STATISTICS- TIME- ON
- SELECT
- SUM- (1) OVER(- ORDER- BY- Id- DESC- ROWS- BETWEEN- UNBOUNDED PRECEDING- AND- CURRENT- ROW) rn,Id
- FROM
- dbo.T_MyCourse
運行結果

通過運行之后,看到結果,使用微軟官方提供的方法進行編號排序,速度明顯的提高。
不過我使用上述方法進行分頁獲取數據的時候結果又有點不一樣。
分頁獲取數據:
ROW_NUMBER() 分頁獲取數據:?
- SET- STATISTICS- TIME- ON
- SELECT
- *
- FROM
- (
- SELECT
- ROW_NUMBER() OVER(- ORDER- BY- Id- DESC- ) rn,Id
- FROM
- dbo.T_MyCourse
- )a
- WHERE
- a.rn- BETWEEN- 55- AND- 444

執行sql命令:DBCC DROPCLEANBUFFERS ,清除數據庫緩存后的結果

UNBOUNDED分頁獲取數據:
- SET- STATISTICS- TIME- ON
- SELECT
- *
- FROM
- (
- SELECT
- SUM- (1) OVER(- ORDER- BY- Id- DESC- ROWS- BETWEEN- UNBOUNDED PRECEDING- AND- CURRENT- ROW) rn,Id
- FROM
- dbo.T_MyCourse
- )a
- WHERE
- a.rn- BETWEEN- 22- AND- 444

UNBOUNDED這個方式下執行了DBCC DROPCLEANBUFFERS 清除緩存的sql也沒有用,執行時間沒有變化。
通過上述結果,看到ROW_NUMBER()獲取分頁的數據明顯更快,我猜測是微軟對ROW_NUMBER()這個方法做了優化,可能是有緩存,讀取的緩存中的數據然后進行分頁。
總結
以上所述是小編給大家介紹的SQL Server 分頁編號的另一種方式,希望對大家有所幫助,
  - SQL數據庫中Truncate的用法- runcate是一個能夠快速清空資料表內所有資料的SQL語法。這篇文章主要介紹了SQL中Truncate的用法,需要的朋友可以參考下... 
  - Sql Server數據庫的一些知識點定義和總結- 文章主要給大家總結介紹了關于Sql Server的一些知識點定義文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習... 
  - Sql Server數據庫開窗函數Over()的使用實例詳解- 文章主要介紹了Sql Server 開窗函數Over()的使用,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下利用over(),將統計信息計算出來,然后直接篩選結果集 declare @t table(... 
  - SQL Server在分頁獲取數據的同時獲取到總記錄數的兩種方法- 本文通過兩種方法給大家介紹SQL Server 在分頁獲取數據的同時獲取到總記錄數,感興趣的朋友跟隨腳本之家小編一起學習吧。SQL Server 獲取數據的總記錄數,有兩種方式:1.先分頁獲... 
  - SQL server數據庫高可用日志傳送的方法- SQL Server 使用日志傳送,您可以自動將“主服務器”實例上“主數據庫”內的事務日志備份發送到單獨“輔助服務器”實例上的一個或多個“... 
  - Sql Server 數據庫中調用dll文件的過程- 文章主要介紹了Sql Server 數據庫中調用dll文件的過程,非常不錯,具有一定的參考借鑒價值,感興趣的朋友跟隨小編一起學習吧... 
  - Sql Server 數據庫獲取字符串中小寫字母的SQL語句- 文章主要介紹了SqlServer 獲取字符串中小寫字母的實現方法,非常不錯,具有一定的參考借鑒價值,需要的朋友跟隨腳本之家小編一起學習吧有時候我們會截取字符串中的一些特殊想要的... 
  - Sql Server數據庫如何去掉內容里面的Html標簽- 文章主要介紹了Sql Server 去掉內容里邊的Html標簽的實現方法,代碼超簡單,具有一定的參考借鑒價值,需要的朋友可以參考下。... 
  - SQL Server數據庫遠程更新目標表數據的存儲過程- 文章主要介紹了SQL Server 遠程更新目標表數據的存儲過程,適用于更新列名一致,主鍵為Int類型,具體實例代碼大家參考下本文本文給大家分享一個遠程更新目標庫數據的存儲過程,適用... 
  - MsSql 數據庫使用sqlplus創建DDL和DML操作方法- 文章主要介紹了使用sqlplus創建DDL和DML操作方法,需要的朋友可以參考下,在window進入命令行模式敲sqlplus就會... 

