婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

熱門標簽:地圖標注可以編輯地名嗎 南京怎么申請400這種電話 南通智能外呼系統怎么樣 地圖標注跑線下市場 疫情時期電話機器人 臺灣外呼系統軟件 樂昌電話機器人 濮陽清豐400開頭的電話申請 真3地圖標注

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

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

結果為:

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 

結果:

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

在兩個SQL上,分別加入以下SQL,并使用MS的“包括執(zhí)行計劃”,便于查看執(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 為頁大小
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()解析函數效率比較高寫。

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

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

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

巨人網絡通訊聲明:本文標題《SQLSERVER分頁查詢關于使用Top方式和row_number()解析函數的不同》,本文關鍵詞  SQLSERVER,分頁,查詢,關于,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQLSERVER分頁查詢關于使用Top方式和row_number()解析函數的不同》相關的同類信息!
  • 本頁收集關于SQLSERVER分頁查詢關于使用Top方式和row_number()解析函數的不同的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 淮南市| 来安县| 绍兴市| 柯坪县| 山西省| 秦安县| 孝义市| 托里县| 巩留县| 乐东| 黄大仙区| 拜泉县| 祁阳县| 柳州市| 吉木乃县| 广州市| 社旗县| 松阳县| 延寿县| 汽车| 攀枝花市| 恩施市| 奉节县| 苗栗县| 门头沟区| 新建县| 宁乡县| 利川市| 噶尔县| 石景山区| 鱼台县| 长子县| 家居| 大安市| 巨鹿县| 吴堡县| 拉孜县| 如皋市| 喀喇沁旗| 夏河县| 石阡县|