SQL

SQL

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

페이지 정보

profile_image
영삼이
0건 59회 25-03-28 15:23

본문

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를 써라.
더 읽기 쉽고, 더 빠르고, 더 유연하다.

댓글목록

등록된 댓글이 없습니다.