2014-04-24 2 views
2

COUNT (*)와 COUNT (table.ColumnName)의 차이점은 무엇입니까?COUNT (*)와 COUNT (table.ColumnName)의 차이점은 무엇입니까?

나는 항상 COUNT에 대한 매개 변수로 열 이름을 넣는 것이 더 빠르다고 생각했지만 지금은 생각하지 않을 때 실제로 알지 못합니다. *은 함수가 행을 계산한다는 것을 의미하므로 아마도 그렇지 않습니다. 차이가 있습니까? 아니면 특정 열 이름을 지정해도 프로세스가 느려지는 것일까 요?

+3

성능 [COUNT (*) vs COUNT (col)] 읽기 (http://www.mysqlperformanceblog.com/2007/04/10/count-vs-countcol/) –

답변

5

이 두 가지의 차이점은 (주로) 성능이 아닙니다. 그들은 다른 것들을 계산합니다 :

COUNT(*)은 테이블의 행을 계산합니다.

COUNT(column)null 값을 무시하고 항목을 계산합니다.

물론이 두 가지 성능 차이가있을 수 있지만 다른 작업을 수행하는 경우 예상됩니다. 특히 열에서 null 값을 허용하는 경우 쿼리는 그렇지 않은 열 (또는 COUNT(*))보다 시간이 오래 걸릴 수 있습니다.

4

COUNT(*)

COUNT(table.ColumnName)이 널 (NULL)이 아닌 모든 값의 수를 반환합니다 모든 레코드의 수를 반환합니다.


참조 Microsoft 설명서 :

http://technet.microsoft.com/en-us/library/ms175997.aspx

ALL

는 모든 값에 집계 함수를 적용합니다. ALL이 기본값입니다. DISTINCT

는 COUNT 고유 널 (null)이 아닌 값의 수를 반환하도록 지정합니다.