SQL Server數(shù)據(jù)庫中分頁編號的另一種方式
文章主要介紹了SQL Server 分頁編號的另一種方式,需要的朋友可以參考下今天看書講T-SQL,看到了UNBOUNDED PRECEDING,就想比對下ROW_NUMBER()的運行速度。...
文章主要介紹了SQL Server 分頁編號的另一種方式,需要的朋友可以參考下
今天看書講T-SQL,看到了UNBOUNDED PRECEDING,就想比對下ROW_NUMBER()的運行速度。
sql及相關(guān)的結(jié)果如下,數(shù)據(jù)庫中的數(shù)據(jù)有5W+。
ROW_NUMBER():
SET
STATISTICS
TIME
ON
SELECT
ROW_NUMBER() OVER(
ORDER
BY
Id
DESC
) rn,Id
FROM
dbo.T_MyCourse
運行結(jié)果
?
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
運行結(jié)果
通過運行之后,看到結(jié)果,使用微軟官方提供的方法進(jìn)行編號排序,速度明顯的提高。
不過我使用上述方法進(jìn)行分頁獲取數(shù)據(jù)的時候結(jié)果又有點不一樣。
分頁獲取數(shù)據(jù):
ROW_NUMBER() 分頁獲取數(shù)據(jù):?
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
執(zhí)行sql命令:DBCC DROPCLEANBUFFERS ,清除數(shù)據(jù)庫緩存后的結(jié)果
UNBOUNDED分頁獲取數(shù)據(jù):
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這個方式下執(zhí)行了DBCC DROPCLEANBUFFERS 清除緩存的sql也沒有用,執(zhí)行時間沒有變化。
通過上述結(jié)果,看到ROW_NUMBER()獲取分頁的數(shù)據(jù)明顯更快,我猜測是微軟對ROW_NUMBER()這個方法做了優(yōu)化,可能是有緩存,讀取的緩存中的數(shù)據(jù)然后進(jìn)行分頁。
總結(jié)
以上所述是小編給大家介紹的SQL Server 分頁編號的另一種方式,希望對大家有所幫助,
- SQL數(shù)據(jù)庫中Truncate的用法
- Sql Server數(shù)據(jù)庫的一些知識點定義和總結(jié)
- Sql Server數(shù)據(jù)庫開窗函數(shù)Over()的使用實例詳解
- SQL Server在分頁獲取數(shù)據(jù)的同時獲取到總記錄數(shù)的兩種
- SQL server數(shù)據(jù)庫高可用日志傳送的方法
- Sql Server 數(shù)據(jù)庫中調(diào)用dll文件的過程
- Sql Server 數(shù)據(jù)庫獲取字符串中小寫字母的SQL語句
- Sql Server數(shù)據(jù)庫如何去掉內(nèi)容里面的Html標(biāo)簽
- SQL Server數(shù)據(jù)庫遠(yuǎn)程更新目標(biāo)表數(shù)據(jù)的存儲過程
- MsSql 數(shù)據(jù)庫使用sqlplus創(chuàng)建DDL和DML操作方法
SQL數(shù)據(jù)庫中Truncate的用法
runcate是一個能夠快速清空資料表內(nèi)所有資料的SQL語法。這篇文章主要介紹了SQL中Truncate的用法,需要的朋友可以參考下...
Sql Server數(shù)據(jù)庫的一些知識點定義和總結(jié)
文章主要給大家總結(jié)介紹了關(guān)于Sql Server的一些知識點定義文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)...
Sql Server數(shù)據(jù)庫開窗函數(shù)Over()的使用實例詳解
文章主要介紹了Sql Server 開窗函數(shù)Over()的使用,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下利用over(),將統(tǒng)計信息計算出來,然后直接篩選結(jié)果集 declare @t table(...
SQL Server在分頁獲取數(shù)據(jù)的同時獲取到總記錄數(shù)的兩種方法
本文通過兩種方法給大家介紹SQL Server 在分頁獲取數(shù)據(jù)的同時獲取到總記錄數(shù),感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧。SQL Server 獲取數(shù)據(jù)的總記錄數(shù),有兩種方式:1.先分頁獲...
SQL server數(shù)據(jù)庫高可用日志傳送的方法
SQL Server 使用日志傳送,您可以自動將“主服務(wù)器”實例上“主數(shù)據(jù)庫”內(nèi)的事務(wù)日志備份發(fā)送到單獨“輔助服務(wù)器”實例上的一個或多個“...
Sql Server 數(shù)據(jù)庫中調(diào)用dll文件的過程
文章主要介紹了Sql Server 數(shù)據(jù)庫中調(diào)用dll文件的過程,非常不錯,具有一定的參考借鑒價值,感興趣的朋友跟隨小編一起學(xué)習(xí)吧...
Sql Server 數(shù)據(jù)庫獲取字符串中小寫字母的SQL語句
文章主要介紹了SqlServer 獲取字符串中小寫字母的實現(xiàn)方法,非常不錯,具有一定的參考借鑒價值,需要的朋友跟隨腳本之家小編一起學(xué)習(xí)吧有時候我們會截取字符串中的一些特殊想要的...
Sql Server數(shù)據(jù)庫如何去掉內(nèi)容里面的Html標(biāo)簽
文章主要介紹了Sql Server 去掉內(nèi)容里邊的Html標(biāo)簽的實現(xiàn)方法,代碼超簡單,具有一定的參考借鑒價值,需要的朋友可以參考下。...
SQL Server數(shù)據(jù)庫遠(yuǎn)程更新目標(biāo)表數(shù)據(jù)的存儲過程
文章主要介紹了SQL Server 遠(yuǎn)程更新目標(biāo)表數(shù)據(jù)的存儲過程,適用于更新列名一致,主鍵為Int類型,具體實例代碼大家參考下本文本文給大家分享一個遠(yuǎn)程更新目標(biāo)庫數(shù)據(jù)的存儲過程,適用...
MsSql 數(shù)據(jù)庫使用sqlplus創(chuàng)建DDL和DML操作方法
文章主要介紹了使用sqlplus創(chuàng)建DDL和DML操作方法,需要的朋友可以參考下,在window進(jìn)入命令行模式敲sqlplus就會...