1
조인 조건을 빠뜨리지 않는다
조건이 없으면 모든 행 조합이 만들어져 결과가 폭발합니다.
JOIN orders o ON u.user_id = o.user_id
조인 자체보다 실수는 조건 누락, 모호한 컬럼, 예상보다 늘어난 결과 행에서 자주 발생합니다.
조건이 없으면 모든 행 조합이 만들어져 결과가 폭발합니다.
JOIN orders o ON u.user_id = o.user_id
INNER JOIN에서는 결과가 같아 보일 수 있지만, OUTER JOIN으로 가면 의미가 달라집니다.
ON u.user_id = o.user_id WHERE o.status = 'PAID'
양쪽 테이블에 user_id, created_at 같은 이름이 있으면 어느 테이블 컬럼인지 밝혀야 합니다.
SELECT u.user_id, o.order_id
회원 1명에 주문 3건이 있으면 JOIN 결과에는 그 회원이 3번 나타납니다.
users 1행 + orders 3행 → 결과 3행
SELECT *는 중복 컬럼, 전송량, API 응답 형태 충돌을 만들기 쉽습니다.
SELECT u.username, o.status
대량 테이블에서는 조인 컬럼 인덱스와 읽은 행 수를 함께 확인합니다.
EXPLAIN SELECT ... JOIN ...
ON 조건이 결과의 의미를 결정합니다.
별칭은 짧게 쓰되 일관되게 유지합니다.
인덱스는 실제 쿼리 패턴과 실행 계획으로 판단합니다.