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

首頁 > 數據庫 > SQL Server > 正文

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

2024-08-31 01:03:40
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了SQLSERVER分頁查詢關于使用Top方式和row_number()解析函數的不同的相關資料,需要的朋友可以參考下
 

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

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

結果為:

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

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

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

結果:

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

這兩個方法,就僅僅是多了一列 rewnumber 嗎?當然不是,來看下內部差別吧:

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

SET STATISTICS TIME ONGO 

要執行的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 

執行之后,查看執行計劃:

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

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

再來看下執行時間信息:

row_number()方式的:

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

純top方式:

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

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

以上所述是小編給大家分享的SQL



注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑河市| 万宁市| 高陵县| 彭泽县| 梁平县| 嘉荫县| 洱源县| 阜南县| 巴青县| 喜德县| 兴隆县| 沧州市| 萨嘎县| 湖州市| 长宁县| 安康市| 漾濞| 个旧市| 开原市| 永吉县| 阿巴嘎旗| 吉林市| 玛沁县| 海晏县| 招远市| 曲松县| 黄骅市| 华阴市| 明水县| 临清市| 宁夏| 玛曲县| 繁昌县| 苍南县| 饶平县| 奉新县| 五华县| 梧州市| 滦南县| 揭西县| 东安县|