SQL Server 分頁編號(hào)的另一種方式【推薦】
今天看書講T-SQL,看到了UNBOUNDED PRECEDING,就想比對(duì)下ROW_NUMBER()的運(yùn)行速度。
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
運(yùn)行結(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
運(yùn)行結(jié)果
通過運(yùn)行之后,看到結(jié)果,使用微軟官方提供的方法進(jìn)行編號(hào)排序,速度明顯的提高。
不過我使用上述方法進(jìn)行分頁獲取數(shù)據(jù)的時(shí)候結(jié)果又有點(diǎn)不一樣。
分頁獲取數(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這個(gè)方式下執(zhí)行了DBCC DROPCLEANBUFFERS 清除緩存的sql也沒有用,執(zhí)行時(shí)間沒有變化。
通過上述結(jié)果,看到ROW_NUMBER()獲取分頁的數(shù)據(jù)明顯更快,我猜測是微軟對(duì)ROW_NUMBER()這個(gè)方法做了優(yōu)化,可能是有緩存,讀取的緩存中的數(shù)據(jù)然后進(jìn)行分頁。
總結(jié)
以上所述是小編給大家介紹的SQL Server 分頁編號(hào)的另一種方式,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)我們網(wǎng)站的支持!
上一篇:Python實(shí)現(xiàn)的連接mssql數(shù)據(jù)庫操作示例
欄 目:MsSql
下一篇:Sql Server 數(shù)據(jù)庫中調(diào)用dll文件的過程
本文標(biāo)題:SQL Server 分頁編號(hào)的另一種方式【推薦】
本文地址:http://www.jygsgssxh.com/a1/MsSql/10367.html
您可能感興趣的文章
- 01-10SQLServer存儲(chǔ)過程實(shí)現(xiàn)單條件分頁
- 01-10SQL Server 2012降級(jí)至2008R2的方法
- 01-10SQLServer中防止并發(fā)插入重復(fù)數(shù)據(jù)的方法詳解
- 01-10SQL Server數(shù)據(jù)庫定時(shí)自動(dòng)備份
- 01-10SQL Server性能調(diào)優(yōu)之緩存
- 01-10實(shí)現(xiàn)SQL Server 原生數(shù)據(jù)從XML生成JSON數(shù)據(jù)的實(shí)例代碼
- 01-10Sql Server 死鎖的監(jiān)控分析解決思路
- 01-10SqlServer 在事務(wù)中獲得自增ID的實(shí)例代碼
- 01-10SqlServer快速檢索某個(gè)字段在哪些存儲(chǔ)過程中(sql 語句)
- 01-10SQLServer性能優(yōu)化--間接實(shí)現(xiàn)函數(shù)索引或者Hash索引


閱讀排行
本欄相關(guān)
- 01-10SQLServer存儲(chǔ)過程實(shí)現(xiàn)單條件分頁
- 01-10SQLServer中防止并發(fā)插入重復(fù)數(shù)據(jù)的方
- 01-10SQL Server 2012降級(jí)至2008R2的方法
- 01-10SQL Server性能調(diào)優(yōu)之緩存
- 01-10SQL Server數(shù)據(jù)庫定時(shí)自動(dòng)備份
- 01-10Sql Server 死鎖的監(jiān)控分析解決思路
- 01-10實(shí)現(xiàn)SQL Server 原生數(shù)據(jù)從XML生成JSON數(shù)
- 01-10SqlServer快速檢索某個(gè)字段在哪些存儲(chǔ)
- 01-10SqlServer 在事務(wù)中獲得自增ID的實(shí)例代
- 01-10SQLServer性能優(yōu)化--間接實(shí)現(xiàn)函數(shù)索引或
隨機(jī)閱讀
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?
- 01-10delphi制作wav文件的方法
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置


