国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - Sql Server - sql server中Select count(*)和Count(1)的區(qū)別和執(zhí)行方式

sql server中Select count(*)和Count(1)的區(qū)別和執(zhí)行方式

2020-04-11 15:42CareySon Sql Server

在SQL Server中Count(*)或者Count(1)或者Count([列])或許是最常用的聚合函數(shù)。很多人其實對這三者之間是區(qū)分不清的。本文會闡述這三者的作用,關(guān)系以及背后的原理

    在SQL Server中Count(*)或者Count(1)或者Count([列])或許是最常用的聚合函數(shù)。很多人其實對這三者之間是區(qū)分不清的。本文會闡述這三者的作用,關(guān)系以及背后的原理。

    往常我經(jīng)常會看到一些所謂的優(yōu)化建議不使用Count(* )而是使用Count(1),從而可以提升性能,給出的理由是Count( *)會帶來全表掃描。而實際上如何寫Count并沒有區(qū)別。

    Count(1)和Count(*)實際上的意思是,評估Count()中的表達(dá)式是否為NULL,如果為NULL則不計數(shù),而非NULL則會計數(shù)。比如我們看代碼1所示,在Count中指定NULL(優(yōu)化器不允許顯式指定NULL,因此需要賦值給變量才能指定)。

?
1
2
3
4
DECLARE @xx INT
SET @xx=NULL
 
SELECT COUNT(@xx) FROM [AdventureWorks2012].[Sales].[SalesOrderHeader]

代碼清單1.Count中指定NULL

 

     由于所有行都為NULL,則結(jié)果全不計數(shù)為0,結(jié)果如圖1所示。

sql server中Select count(*)和Count(1)的區(qū)別和執(zhí)行方式

圖1.顯而易見,結(jié)果為0

 

    因此當(dāng)你指定Count(*) 或者Count(1)或者無論Count(‘anything')時結(jié)果都會一樣,因為這些值都不為NULL,如圖2所示。

sql server中Select count(*)和Count(1)的區(qū)別和執(zhí)行方式

圖2.只要在Count中指定非NULL表達(dá)式,結(jié)果沒有任何區(qū)別

 那Count列呢?

    對于Count(列)來說,同樣適用于上面規(guī)則,評估列中每一行的值是否為NULL,如果為NULL則不計數(shù),不為NULL則計數(shù)。因此Count(列)會計算列或這列的組合不為空的計數(shù)。

 

那Count(*)具體如何執(zhí)行?

    前面提到Count( )有不為NULL的值時,在SQL Server中只需要找出具體表中不為NULL的行數(shù)即可,也就是所有行(如果一行值全為NULL則該行相當(dāng)于不存在)。那么最簡單的執(zhí)行辦法是找一列NOT NULL的列,如果該列有索引,則使用該索引,當(dāng)然,為了性能,SQL Server會選擇最窄的索引以減少IO。

    我們在Adventureworks2012示例數(shù)據(jù)庫的[Person].[Address]表上刪除所有的非聚集索引,在ModifyDate這個數(shù)據(jù)類型為DateTime的列上建立索引,我們看執(zhí)行計劃,如圖3所示:

sql server中Select count(*)和Count(1)的區(qū)別和執(zhí)行方式

圖3.使用了CreateDate的索引

 

    我們繼續(xù)在StateProvinceID列上建立索引,該列為INT列,占4字節(jié),相比之前8字節(jié) DateTime類型的列更短,因此SQL Server選擇了StateProvinceID索引。如圖4所示。

sql server中Select count(*)和Count(1)的區(qū)別和執(zhí)行方式

圖4.選擇了更短的StateProvinceID索引

 

    因此,如果某個表上Count(*)用的比較多時,考慮在一個最短的列建立一個單列索引,會極大的提升性能。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美日韩电影一区 | 日韩欧美在线观看视频 | 日韩成人在线免费观看 | 欧美视频一区二区 | 欧美精品1区2区3区 日本电影中文字幕 | 成人高清网站 | 欧美日韩国产在线观看 | av免费网站 | 欧美一级片 | 一级做a爰片性色毛片精油 欧美中文字幕在线观看 | 国产在线不卡一区 | 每日更新亚洲 | 国产亚洲精品美女久久久久久久久久 | 希岛爱理av一区二区三区 | 亚洲精品一区二区三区蜜桃久 | 欧美综合在线观看 | 免费看国产片在线观看 | 国产成人精品一区二区三区视频 | 久久精品国产一区二区三区不卡 | 国精品一区 | 久久噜噜噜精品国产亚洲综合 | 欧美a级成人淫片免费看 | 成人国内精品久久久久一区 | 国产96在线视频 | 日韩av电影在线观看 | 亚洲午夜激情 | 久久精品国产99国产 | 欧美精品一区二区视频 | 亚洲男人第一天堂 | 一级片在线观看 | 中文国产在线观看 | 午夜精品久久久久久久久久久久 | 亚洲精品91 | 色九九九 | 午夜国产| 日韩三级网 | 亚洲免费在线视频 | 久久精品综合 | 国产日韩视频 | 欧美一级二级视频 | 在线永久免费观看黄网站 |