반응형
먼저 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(1) FROM TestCnt;
|
cs |
count(num)
1
|
SELECT count(num) FROM TestCnt;
|
cs |
count(*) 과 count(1) 은 NULL 값도 포함하여 5 라는 결과가 나오고,
count(num) 은 NULL 값을 포함하지 않아 3 이라는 결과가 나온다.
반응형