count(1)、count(*)與count(列名)的執行區別


原文鏈接

COUNT() 函數返回匹配指定條件的行數。

COUNT(column_name) 函數返回指定列的值的數目(NULL 不計入):不包含值為NULL的記錄

COUNT(*) 函數返回表中的記錄數

COUNT(DISTINCT column_name) 函數返回指定列不同值的數目

SUM()函數,是針對表tab中,任意符合可加減的字段,進行加和。

select COUNT(CARRIER_NAME),sum(STEP_STATUS) from ACC_eLogistics..CARRIER_INFO

這個就可以求出來,這個CARRIER_NAME,一共有多少條記錄,在這記錄中STEP_STATUS的和一共是多少
(無列名) (無列名)
 354        595
大多數在使用count的時候,是搭配group by 一起來使用的,
因為,count只是返回給你數量,要是僅僅是返回select count(*)/count(字段) 就可以執行成功的。

但是要是這樣select:
select count(*) ,OrderSn  from tabA,那你就是想知道OrderSn在TabA中有多少條記錄,
但是OrderSn可能是一或者多個吧,為了區分開每一個OrderSn到底有多少個,那就是用Group by 進行區分

select COUNT(CONTACT_INFO) as CONTACT,ENABLED from CARRIER group by ENABLED

CONTACT ENABLED
 178     0
 74      1

這樣就可以看出來,在CARRIER這個表中,ENABLED有兩種情況,數量分別是178/74,這就是日常count和Group by 搭配的原因,指明具體的字段的不同值之間的數量



 

 

----------------------------------------------------------------------------------------------------------------------------------------

count(*) 和 count(1)和count(列名)區別 

做了下select ,是統計有多少條記錄:

select count(1) from A
select count(*) from A
select count(CreateTime) from A

返回的都是A表中有多少條記錄。

 

2. count(1) and count(字段)
兩者的主要區別是
(1) count(1) 會統計表中的所有的記錄數,包含字段為null 的記錄
(2) count(字段) 會統計該字段在表中出現的次數,忽略字段為null 的情況。即不統計字段為null 的記錄。 
轉自:http://www.cnblogs.com/Dhouse/p/6734837.html

執行效率上:  
列名為主鍵,count(列名)會比count(1)快  
列名不為主鍵,count(1)會比count(列名)快  
如果表多個列並且沒有主鍵,則 count(1) 的執行效率優於 count(*)  
如果有主鍵,則 select count(主鍵)的執行效率是最優的  
如果表只有一個字段,則 select count(*)最優。
轉自:http://eeeewwwqq.iteye.com/blog/1972576
=======================================================================================================


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM