SQL

SQL

DISTINCT는 성능 저하를 일으킬 수 있다 — 중복 데이터 처리 시 GROUP BY로 대체하라

페이지 정보

profile_image
영삼이
0건 46회 25-03-28 15:26

본문

DISTINCT는 성능 저하를 일으킬 수 있다 — 중복 데이터 처리 시 GROUP BY로 대체하라

성능을 고려한 중복 제거 방법을 선택하자


DISTINCT 사용 시 성능 문제

SELECT DISTINCT user_id
FROM orders
WHERE status = 'paid';
  • DISTINCT는 중복 데이터를 제거하기 위해 정렬 또는 해시 연산을 사용

  • 대량 데이터에서 사용하면 성능 저하가 발생할 수 있음


GROUP BY를 사용해 중복 제거

SELECT user_id
FROM orders
WHERE status = 'paid'
GROUP BY user_id;
  • GROUP BY는 이미 그룹화된 결과를 반환하므로 중복된 데이터를 제거

  • 인덱스를 활용할 수 있어 성능에 유리


비교: DISTINCT vs GROUP BY

  • DISTINCT단순히 중복을 제거하는 데 사용

  • GROUP BY그룹화를 위한 필수적인 방법

    • 집계 함수(SUM, COUNT, AVG 등)와 함께 사용할 수 있기 때문에, 추후 확장성이 더 좋음


예시: DISTINCT 대신 GROUP BY 활용

SELECT user_id, COUNT(*)
FROM orders
WHERE status = 'paid'
GROUP BY user_id;
  • DISTINCT로 중복을 제거하는 것 대신 GROUP BY로 그룹을 묶고 집계까지 같이 할 수 있음


✔️ DISTINCT는 간편하지만 성능을 저하시킬 수 있다.
GROUP BY는 성능 최적화뿐만 아니라 더 유연한 중복 제거 방법이므로,
가능한 경우 GROUP BY로 대체하는 것이 더 효율적이다.

댓글목록

등록된 댓글이 없습니다.