관계를 결과로 펼쳐
INNER JOIN은 양쪽 테이블에서 조건이 맞는 행만 남겨. 관계는 ON에 적고 보통 foreign_key = primary_key 모양이야. 주문에 사용자 이름을 붙이거나 주문 항목에 상품 정보를 붙일 때 사용해.
연결 조건과 결과 필터를 구분해
ON o.user_id = u.id AND o.status = 'paid'처럼 관계에 필요한 조건은 ON에 둘 수 있어. 결과 전체를 거르는 조건은 WHERE에 두면 의도가 더 분명해. 별칭 u, o, li, p를 일관되게 쓰고 열 이름을 한정해 모호함을 없애.
색인이 JOIN의 비용을 좌우해
기본 키 쪽은 이미 색인이 있지만 외래 키 쪽은 직접 만들어야 할 수 있어. 예를 들어 order_items.product_id로 자주 잇는다면 해당 열의 색인을 확인해. 테이블 4개를 잇더라도 관계와 색인이 분명하면 질의는 읽을 수 있는 문장으로 남아.