본문 바로가기

DBMS/SQL Server (MS-SQL)

[SQL Server / MS-SQL] count(*) / count(1) / count(column) 차이

반응형

 

 


 

 

 

 

먼저 count( ) 함수 란?

집계함수로, ( ) 내의 있는 항목의 수를 출력한다.

 

즉, count(name) 의 경우 name 이라는 컬럼의 갯수를 나타낸다는 의미이다.

count(*) 은 전체 행 수를 나타내며, count(1) 과 같은 의미이다.

 

어디서 count(1) 이 count(*) 보다 더 빠르다고 들었어서 count(1) 을 썻던 적이 있는데

결론적으로 성능적 차이 없다. 둘이 동일하다고 보면된다. count(*) = count(1)

 

대신 count(*) / count(1) 과 count(name) 은 다르다.

NULL 값을 포함하냐 마냐의 차이가 있다.

 

count(*) 과 count(1) 은 NULL 값인 컬럼도 포함하지만,

count(name) 은 NULL 값인 컬럼은 포함하지 않는다.

 

직접 눈으로 보자.

 

1
 SELECT * FROM TestCnt;
cs

 

위와 같이 num 이라는 컬럼이 있는 TestCnt 라는 테이블이 있다.

 

 

 

count(*) / count(1) / count(num) 으로 각 각 조회해보자.

 

count(*)


1
SELECT count(*FROM TestCnt;
cs

 

 

 

count(1)


1
SELECT count(1FROM TestCnt;
cs

 

 

 

count(num)


1
SELECT count(num) FROM TestCnt;
cs

 

 

 

 

count(*) 과 count(1) 은 NULL 값도 포함하여 5 라는 결과가 나오고,

count(num) 은 NULL 값을 포함하지 않아 3 이라는 결과가 나온다.

 

 

반응형