쿼리를 짜다 보면,
중복이 생길까 봐 DISTINCT를 습관처럼 붙이는 경우가 있습니다.
하지만 항상 붙이는 건 좋은 습관이 아닙니다.
데이터 구조에 따라 성능에 불필요한 연산이 추가될 수 있기 때문입니다.
📌 트랜잭션 테이블 (ex. orders)
SELECT DISTINCT user_id
FROM orders
WHERE status = 'complete';
→ 한 유저가 여러 번 주문할 수 있기 때문에, 중복 제거 목적이라면 의미가 있습니다.
📌 마스터 테이블 (ex. users)
SELECT DISTINCT user_id
FROM users;
→ user_id는 본래 고유합니다.
→ 이 경우 DISTINCT는 불필요한 정렬 연산만 추가하고, 쿼리 성능을 떨어뜨릴 수 있습니다.
✔️ DISTINCT는 습관처럼 붙이기보단, 데이터 구조를 이해한 뒤 필요한 경우에만 사용해야 합니다.