濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > SQLSERVER分頁(yè)查詢(xún)關(guān)于使用Top方式和row_number()解析函數(shù)的不同

SQLSERVER分頁(yè)查詢(xún)關(guān)于使用Top方式和row_number()解析函數(shù)的不同

熱門(mén)標(biāo)簽:地圖標(biāo)注可以編輯地名嗎 南京怎么申請(qǐng)400這種電話(huà) 南通智能外呼系統(tǒng)怎么樣 地圖標(biāo)注跑線(xiàn)下市場(chǎng) 疫情時(shí)期電話(huà)機(jī)器人 臺(tái)灣外呼系統(tǒng)軟件 樂(lè)昌電話(huà)機(jī)器人 濮陽(yáng)清豐400開(kāi)頭的電話(huà)申請(qǐng) 真3地圖標(biāo)注

臨近春節(jié),心早已飛了不在工作上了,下面小編給大家整理些數(shù)據(jù)庫(kù)的幾種分頁(yè)查詢(xún)。

Sql Sever 2005之前版本:

select top 頁(yè)大小 *
from 表名
where id not in
(
select top 頁(yè)大小*(查詢(xún)第幾頁(yè)-1) id from 表名 order by id
)
order by id 

例如:

select top 10 * --10 為頁(yè)大小
from [TCCLine].[dbo].[CLine_CommonImage]
where id not in
(
--40是這么計(jì)算出來(lái)的:10*(5-1)
-- 頁(yè)大小*(查詢(xún)第幾頁(yè)-1)
select top 40 id from [TCCLine].[dbo].[CLine_CommonImage] order by id
)
order by id

結(jié)果為:

Sql Sever 2005及以上版本,多了個(gè)分頁(yè)查詢(xún)方法:

/*
* firstIndex:起始索引
* pageSize:每頁(yè)顯示的數(shù)量
* orderColumn:排序的字段名
* SQL:可以是簡(jiǎn)單的單表查詢(xún)語(yǔ)句,也可以是復(fù)雜的多表聯(lián)合查詢(xún)語(yǔ)句
*/
select top pageSize o.* from (select row_number() over(order by orderColumn) as rownumber,* from(SQL) as o where rownumber>firstIndex; 

例如:

select top 10 numComImg.* from 
( select row_number() over(order by id asc) as rownumber,* from (select * FROM [TCCLine].[dbo].[CLine_CommonImage]) as comImg)
as numComImg where rownumber>40 

結(jié)果:

這兩個(gè)方法,就僅僅是多了一列 rewnumber 嗎?當(dāng)然不是,來(lái)看下內(nèi)部差別吧:

在兩個(gè)SQL上,分別加入以下SQL,并使用MS的“包括執(zhí)行計(jì)劃”,便于查看執(zhí)行詳情:

SET STATISTICS TIME ON
GO 

要執(zhí)行的SQL:

SET STATISTICS TIME ON
GO
select top 10 numComImg.* from 
( select row_number() over(order by id asc) as rownumber,* from (select * FROM [TCCLine].[dbo].[CLine_CommonImage]) as comImg)
as numComImg where rownumber>40
SET STATISTICS TIME ON
GO
select top 10 * --10 為頁(yè)大小
from [TCCLine].[dbo].[CLine_CommonImage]
where id not in
(
--40是這么計(jì)算出來(lái)的:10*(5-1)
-- 頁(yè)大小*(查詢(xún)第幾頁(yè)-1)
select top 40 id from [TCCLine].[dbo].[CLine_CommonImage] order by id
)
order by id 

執(zhí)行之后,查看執(zhí)行計(jì)劃:

看得出,兩個(gè)同樣功能的SQL,執(zhí)行時(shí),使用 row_number() 的,要比是用 純TOP方式的,查詢(xún)開(kāi)銷(xiāo)少得多,上圖顯示 28:72,純top方式,使用了兩次聚集掃描。

再來(lái)看下執(zhí)行時(shí)間信息:

row_number()方式的:


純top方式:


相比之下,還是row_number()解析函數(shù)效率比較高寫(xiě)。

以上所述是小編給大家分享的SQLSERVER分頁(yè)查詢(xún)關(guān)于使用Top方式和row_number()解析函數(shù)的不同,希望對(duì)大家有所幫助。

您可能感興趣的文章:
  • SqlServer2000+ 身份證合法校驗(yàn)函數(shù)的示例代碼
  • Sqlserver 自定義函數(shù) Function使用介紹
  • SQLServer行列互轉(zhuǎn)實(shí)現(xiàn)思路(聚合函數(shù))
  • SQLServer中Partition By及row_number 函數(shù)使用詳解
  • SQLServer中merge函數(shù)用法詳解
  • sqlserver四舍五入使用round函數(shù)及cast和convert函數(shù)
  • 談?wù)剆qlserver自定義函數(shù)與存儲(chǔ)過(guò)程的區(qū)別
  • SQLServer之常用函數(shù)總結(jié)詳解

標(biāo)簽:南京 通遼 阿里 馬鞍山 河北 福建 廣安 陜西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQLSERVER分頁(yè)查詢(xún)關(guān)于使用Top方式和row_number()解析函數(shù)的不同》,本文關(guān)鍵詞  SQLSERVER,分頁(yè),查詢(xún),關(guān)于,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQLSERVER分頁(yè)查詢(xún)關(guān)于使用Top方式和row_number()解析函數(shù)的不同》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于SQLSERVER分頁(yè)查詢(xún)關(guān)于使用Top方式和row_number()解析函數(shù)的不同的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    吉首市| 高雄市| 和田县| 屏南县| 普格县| 禄丰县| 大邑县| 榆树市| 镇巴县| 通城县| 乌海市| 井研县| 特克斯县| 桃源县| 宜兰县| 东宁县| 三门峡市| 科技| 白河县| 台北市| 玉树县| 光山县| 平远县| 乡城县| 松潘县| 宜城市| 灵丘县| 剑川县| 益阳市| 闻喜县| 松潘县| 伊春市| 开远市| 崇仁县| 察隅县| 来凤县| 白水县| 高雄市| 南投市| 香港 | 深泽县|