DISTINCT는 만능이 아니다 — GROUP BY로 대체하는 게 더 유리할 때가 있다
페이지 정보

영삼이
본문
✅ DISTINCT
는 만능이 아니다 — GROUP BY로 대체하는 게 더 유리할 때가 있다
의도를 명확히 드러내면 성능도 따라온다
❌ 무조건 DISTINCT
쓰는 경우
SELECT DISTINCT user_id
FROM orders
WHERE status = 'paid';
-
중복 제거가 목적이지만
-
내부적으로는 정렬 또는 해시 연산이 발생
-
의미가 불명확하고, 성능도 좋지 않을 수 있음
✅ 명확한 의도면 GROUP BY
가 더 낫다
SELECT user_id
FROM orders
WHERE status = 'paid'
GROUP BY user_id;
-
user_id
별로 한 번씩만 출력됨 -
인덱스 최적화나 실행계획에서 유리
-
통계, 집계 연산 추가하기도 쉬움
확장하기 쉬운 구조
SELECT user_id, COUNT(*) AS order_count
FROM orders
WHERE status = 'paid'
GROUP BY user_id;
-
그냥 중복 제거로 끝나는 게 아니라
-
확장성과 명확성이 생김
✔️ DISTINCT
는 짧지만 애매하다.
중복 제거 목적이 명확하면 GROUP BY
를 써라.
더 읽기 쉽고, 더 빠르고, 더 유연하다.
- 이전글조건마다 다른 집계를 원할 때는 SUM(CASE WHEN ...)이 정답이다 25.03.28
- 다음글서브쿼리는 SELECT 말고 FROM에도 쓸 수 있다 25.03.28
댓글목록
등록된 댓글이 없습니다.