最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年02月03日 15:39:54   作者:Eric-Lee  
這篇文章主要介紹了SQLSERVER分頁查詢關(guān)于使用Top方式和row_number()解析函數(shù)的不同的相關(guān)資料,需要的朋友可以參考下

臨近春節(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:可以是簡單的單表查詢語句,也可以是復雜的多表聯(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 嗎?當然不是,來看下內(nèi)部差別吧:

在兩個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()解析函數(shù)效率比較高寫。

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

相關(guān)文章

  • SQL 尚未定義空閑 CPU 條件 - OnIdle 作業(yè)計劃將不起任何作用

    SQL 尚未定義空閑 CPU 條件 - OnIdle 作業(yè)計劃將不起任何作用

    今天在配置sql server 代理服務(wù)器的計劃任務(wù)的時候發(fā)現(xiàn)了日志中提示這個SQL 尚未定義空閑 CPU 條件 - OnIdle 作業(yè)計劃將不起任何作用信息導致無法執(zhí)行計劃任務(wù),那么可以按照下面的方法解決即可
    2021-06-06
  • Spark SQL 2.4.8 操作 Dataframe的兩種方式

    Spark SQL 2.4.8 操作 Dataframe的兩種方式

    這篇文章主要介紹了Spark SQL 2.4.8 操作 Dataframe的兩種方式,方式一是通過dsl操作,方式二是利用sql方式操作,每種方式通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2021-10-10
  • 使用row_number()實現(xiàn)分頁實例

    使用row_number()實現(xiàn)分頁實例

    或許大家不知道,其實使用row_number()是可以實現(xiàn)分頁的,下面有個不錯的示例,大家可以嘗試操作下
    2013-11-11
  • SQL Server 使用join all優(yōu)化 or 查詢速度

    SQL Server 使用join all優(yōu)化 or 查詢速度

    一個老項目,加載列表奇慢,超過10秒鐘, 主要涉及兩個表, user表,procuts表。因為涉及多層代理,使用site字段保存目錄
    2020-09-09
  • SQL文本提取/截取的四種方式

    SQL文本提取/截取的四種方式

    本文主要介紹了SQL文本提取/截取的四種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • SQL Server使用Windows身份驗證與JDBC連接數(shù)據(jù)庫的操作流程

    SQL Server使用Windows身份驗證與JDBC連接數(shù)據(jù)庫的操作流程

    在企業(yè)級應用中,數(shù)據(jù)庫的安全性是非常重要的,SQL Server 提供了多種身份驗證方式,其中 Windows 身份驗證是一種較為安全且方便的管理方式,本文將介紹如何在 Java 中使用 JDBC 連接 SQL Server 數(shù)據(jù)庫,并且通過 Windows 身份驗證來確保數(shù)據(jù)訪問的安全性
    2024-12-12
  • SQL語法 分隔符理解小結(jié)

    SQL語法 分隔符理解小結(jié)

    單引號和雙引號之間的區(qū)別最早在SQL92標準中引入的。對于標識符,這個標準區(qū)分了常規(guī)標識符和分隔的標識符。
    2009-10-10
  • 某年第一周開始日期實現(xiàn)方法

    某年第一周開始日期實現(xiàn)方法

    你想獲取某一年份第一周開始的日期,Insus.NET給你的答案,可以參考使用下面這個函數(shù)
    2012-01-01
  • SQL 合并多行記錄的方法總匯

    SQL 合并多行記錄的方法總匯

    合并多行記錄的方法,匯總。
    2009-06-06
  • SQL Server分頁方法匯總

    SQL Server分頁方法匯總

    這篇文章介紹了SQL Server分頁的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05

最新評論

措美县| 镇安县| 大竹县| 平凉市| 利津县| 北碚区| 普格县| 阳朔县| 祁东县| 敦化市| 张家港市| 株洲市| 宁波市| 蛟河市| 博野县| 闸北区| 治多县| 黄陵县| 衡阳县| 林甸县| 哈密市| 洪雅县| 洪泽县| 大名县| 冷水江市| 蓬安县| 迁安市| 蓬溪县| 本溪市| 东方市| 原平市| 伊宁市| 百色市| 阿坝| 鹤峰县| 泽州县| 资溪县| 富民县| 定远县| 梅州市| 长春市|