Search

[필수:정합+성능]자기 자신을 비교하는 조인 조건

BAD: 2.479ms, hit=1, read=10

자기 자신을 비교하는 조인
SELECT o.ord_no ,m.nick_nm ,s.shop_nm FROM startdbpg.tr_ord_big o INNER JOIN startdbpg.ms_mbr_big m ON m.mbr_id = o.mbr_id INNER JOIN startdbpg.ms_shop_big s ON s.shop_id = s.shop_id WHERE o.ord_no = 1001 ;
SQL
복사
실행계획 보기
SQL 결과 보기
•
s.shop_id = s.shop_id는 매장 테이블끼리 비교할 뿐, 주문과 매장을 연결하지 않습니다.
•
결국 조인 조건이 없는 것과 같아서 주문 1건 × 매장 300곳 = 300건이 만들어집니다(카테시안 곱).
•
매장이 300곳뿐이라 시간 차이는 작지만, 큰 테이블끼리라면 결과가 폭발합니다(1만 건 × 1만 건 = 1억 건).

GOOD: 0.248ms, hit=11

서로 다른 테이블 조인 키 비교
SELECT o.ord_no ,m.nick_nm ,s.shop_nm FROM startdbpg.tr_ord_big o INNER JOIN startdbpg.ms_mbr_big m ON m.mbr_id = o.mbr_id INNER JOIN startdbpg.ms_shop_big s ON s.shop_id = o.shop_id WHERE o.ord_no = 1001 ;
SQL
복사
실행계획 보기
SQL 결과 보기
•
s.shop_id = o.shop_id처럼 주문과 매장의 연결 키를 비교해 해당 주문의 매장만 정확하게 조회합니다.
💡

KEY POINT

•
조인 조건은 항상 서로 다른 테이블의 컬럼을 비교합니다.
•
자기 자신을 비교하면 조인 조건이 없는 것과 같아, 모든 조합이 만들어집니다.
•
누구나 하는 실수입니다. 조인 SQL을 작성한 뒤에는 조인 조건을 한 번 더 검토합니다. 특히 큰 테이블끼리 조인할 때는 반드시 확인합니다.
📖 DEEP DIVE — SQL STARTER for MySQL