RDBMS

MySQL > COUNT 함수의 파라미터에 따른 성능 차이

Krevis 2025. 10. 15. 06:19

COUNT(*), COUNT(1), COUNT(칼럼명) 중 어느 걸 사용해야 성능에 좋을까?에 대한 궁금증을 해소하기 위해 작성

 

COUNT(*)

NULL 값 여부와 상관없이 테이블의 모든 행을 센다

 

MySQL 옵티마이저가 COUNT(*)를 위해 특수 최적화를 하기 때문에 가장 빠르다

실제로는 특정 칼럼을 읽지 않고, 단순히 행의 수만 계산(인덱스만으로 계산 가능)

 

COUNT(1)

각 행마다 1이라는 상수를 평가하고, 그 결과가 NULL이 아니므로 결국 모든 행을 센다

 

COUNT(*)와 사실상 동일

 

COUNT(칼럼명)

지정된 칼럼이 NULL이 아닌 행만 센다

 

NULL 판별로 인해 상대적으로 느리다(인덱스가 있다면 인덱스에서 NULL 여부만 확인하므로 어느 정도 빨라질 수는 있다)