Search

[필수:정합+성능]복합키 조인 조건 누락

BAD

SELECT p.mbr_id ,p.pay_ym AS bill_ym ,d.pay_ym AS detail_ym ,d.pay_seq ,d.pay_amt FROM startdbpg.tr_mbr_fee_pay p INNER JOIN startdbpg.tr_mbr_fee_pay_det d ON d.mbr_id = p.mbr_id WHERE p.mbr_id = 'M1' ORDER BY p.pay_ym, d.pay_ym, d.pay_seq ;
SQL
복사
실행계획 보기
•
회원 ID만으로 조인하면 청구월이 서로 다른 납부 정보와 상세 내역까지 연결됩니다. 필요한 조인 키가 빠져 데이터가 중복되거나 잘못된 결과가 나올 수 있습니다.

GOOD

SELECT p.mbr_id ,p.pay_ym AS bill_ym ,d.pay_ym AS detail_ym ,d.pay_seq ,d.pay_amt FROM startdbpg.tr_mbr_fee_pay p INNER JOIN startdbpg.tr_mbr_fee_pay_det d ON d.mbr_id = p.mbr_id AND d.pay_ym = p.pay_Ym WHERE p.mbr_id = 'M1' ORDER BY p.pay_ym, d.pay_ym, d.pay_seq ;
SQL
복사
실행계획 보기
•
회원 ID와 청구월(pay_ym)을 모두 조인 조건에 포함해 같은 회원의 같은 청구월 내역만 정확하게 연결합니다.
•
테이블 관계와 생성 스크립트: SQL REMIND 실습 준비 — 6. 복합키 조인 실습 테이블
🔎

TIP

•
일반적인 관계형 모델에서 PK–FK 관계로 조인할 때는 어느 한쪽 테이블의 PK를 구성하는 모든 컬럼이 조인 조건에 포함되는 경우가 많습니다. 특별한 목적의 조인이 아니라면, 복합 PK의 일부가 누락되지 않았는지 먼저 확인하세요.
💡

KEY POINT

•
복합 PK·FK 관계로 조인할 때는 필요한 키 컬럼이 조인 조건에 모두 포함됐는지 확인합니다. 일부 키만 비교하면 서로 다른 청구월의 데이터가 연결되는 등 잘못된 결과가 나올 수 있습니다.