JOIN Checklist

INNER JOIN은 조건, 별칭, 행 수를 함께 점검한다

조인 오류는 문법보다 ON 누락, 모호한 컬럼, 1:N 관계의 행 증가에서 많이 생깁니다.

ON 어떤 행끼리 결합할지 정하는 연결 조건.
WHERE 결합된 결과에서 남길 행을 고르는 필터.
SELECT 필요한 별칭 컬럼만 명확히 출력.
left table

users u

u.user_id 회원 식별자, 조인 키
u.username 출력할 회원 이름
u.created_at orders에도 있을 수 있어 별칭 필요
match rule

ON 조건

정상 u.user_id = o.user_id
누락 모든 users 행과 모든 orders 행이 조합된다.
확인 조인 키 인덱스와 결과 행 수를 함께 본다.
right table

orders o

o.user_id 회원과 연결되는 외래키
o.order_id 주문 식별자
o.status WHERE에서 필터로 자주 사용
01 조건 누락

암시적 JOIN이나 잘못된 리팩터링에서 가장 위험하다.

FROM users u, orders o
02 ON과 WHERE 혼합

INNER JOIN에서는 같아 보여도 OUTER JOIN에서 의미가 갈라진다.

ON u.user_id = o.user_id
WHERE o.status = 'PAID'
03 모호한 컬럼

양쪽에 같은 이름이 있으면 별칭으로 어느 테이블인지 밝힌다.

SELECT u.user_id, o.order_id
04 1:N 행 증가

회원 1명에 주문 3건이면 결과에서도 회원 정보가 3번 보인다.

users 1 row
orders 3 rows
result 3 rows
05 SELECT *

중복 컬럼, 전송량 증가, API 응답 형태 충돌을 만들기 쉽다.

SELECT u.username, o.status
06 실행 계획 미확인

대량 테이블에서는 조인 키 인덱스와 읽은 행 수를 확인한다.

EXPLAIN SELECT ... JOIN ...
정확성 ON 조건이 결과의 의미를 결정한다.
가독성 테이블 별칭은 짧게 쓰되 한 쿼리 안에서 일관되게 유지한다.
성능 인덱스는 실제 쿼리와 실행 계획으로 판단한다.