国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

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

2020-07-25 12:47:31
字體:
供稿:網(wǎng)友

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

Sql Sever 2005之前版本:

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

例如:

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

結(jié)果為:

Sql Sever 2005及以上版本,多了個分頁查詢方法:

/** firstIndex:起始索引* pageSize:每頁顯示的數(shù)量* orderColumn:排序的字段名* SQL:可以是簡單的單表查詢語句,也可以是復(fù)雜的多表聯(lián)合查詢語句*/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é)果:

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

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

SET STATISTICS TIME ONGO 

要執(zhí)行的SQL:

SET STATISTICS TIME ONGOselect 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>40SET STATISTICS TIME ONGOselect top 10 * --10 為頁大小from [TCCLine].[dbo].[CLine_CommonImage]where id not in(--40是這么計算出來的:10*(5-1)-- 頁大小*(查詢第幾頁-1)select top 40 id from [TCCLine].[dbo].[CLine_CommonImage] order by id)order by id 

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

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

再來看下執(zhí)行時間信息:

row_number()方式的:


純top方式:


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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宣化县| 西昌市| 时尚| 永川市| 沙湾县| 松江区| 乡宁县| 香港 | 象山县| 灵丘县| 张掖市| 井研县| 庆城县| 长寿区| 密云县| 临澧县| 论坛| 教育| 汤原县| 南安市| 巴林左旗| 顺义区| 兴安县| 武强县| 静乐县| 四子王旗| 图片| 乐都县| 视频| 比如县| 小金县| 扎兰屯市| 山丹县| 宁蒗| 济阳县| 紫阳县| 辽阳市| 大田县| 襄城县| 五大连池市| 浮山县|