COUNT(*)보다 COUNT(컬럼)이 더 빠를 때가 있다
페이지 정보

영삼이
본문
✅ COUNT(*)
보다 COUNT(컬럼)
이 더 빠를 때가 있다
NULL을 제외하면 스캔 대상이 줄어든다
❌ 무조건 COUNT(*)
만 쓰는 경우
SELECT COUNT(*) FROM users;
-
테이블 전체 row 수를 셈
-
실제로는 모든 열을 스캔할 수도 있음 (DB 종류에 따라 다름)
✅ 특정 컬럼 기준으로 셀 때는 COUNT(컬럼)
사용
SELECT COUNT(email) FROM users;
-
email
이 NULL이 아닌 row만 계산 -
인덱스가 있으면 인덱스만 스캔해서 더 빠름
예시: 조건부 카운트
SELECT
COUNT(*) AS 전체,
COUNT(phone) AS 전화번호있는유저
FROM users;
-
조건 없이 전체 수 = COUNT(*)
-
NULL 제외한 특정 필드 기준 = COUNT(컬럼)
✔️ 단순 row 수가 아니라
특정 조건, 특정 컬럼 존재 여부 기준으로 셀 때는
COUNT(컬럼)
을 활용하면 불필요한 전체 스캔을 줄일 수 있다.
- 이전글CASE WHEN은 SELECT뿐 아니라 WHERE, ORDER BY에도 쓸 수 있다 25.03.28
- 다음글EXISTS는 IN보다 빠를 때가 많다 25.03.28
댓글목록
등록된 댓글이 없습니다.