[SQL] 조인 전, 데이터 구조부터 파악하기

Unit·2025년 10월 5일

SQL

목록 보기
38/59

조인을 했는데 결과 행 수가 늘어날 때,
“조인 잘못했나?” 하고 당황한 적 있으신가요?

하지만 행이 늘어났다는 게 꼭 오류를 의미하지 않습니다.
데이터가 어떤 구조로 쌓여 있는지 이해하면,
그 변화가 자연스러운 경우도 많습니다.


🧩 예를 들어볼게요

-- 주문 기본 테이블
orders
+-----------+-------------+
| order_id  | customer_id |
+-----------+-------------+
| 1001      | A           |
| 1002      | B           |
+-----------+-------------+

-- 주문 상세 테이블
order_items
+-----------+-----------+
| order_id  | item_name |
+-----------+-----------+
| 1001      | Keyboard  |
| 1001      | Mouse     |
| 1002      | Monitor   |
+-----------+-----------+

이 두 테이블을 조인하면 이렇게 됩니다.

SELECT o.order_id
     , o.customer_id
     , i.item_name
FROM   orders o
INNER JOIN order_items i
  ON   o.order_id = i.order_id;
order_idcustomer_iditem_name
1001AKeyboard
1001AMouse
1002BMonitor

행이 늘어났죠.
하지만 이건 잘못된 조인이 아닙니다.

한 주문이 여러 상품을 가질 수 있기 때문이에요.
즉, “행이 늘었다”는 건 데이터의 관계(1:N 구조) 를 반영한 자연스러운 결과입니다.


🧠 중요한 건 ‘데이터의 기준 단위’

조인을 해석할 때는 먼저,
이 데이터가 어떤 단위를 기준으로 쌓여 있는지 생각해야 합니다.
• 주문 테이블 → 주문 1건당 1행
• 주문 상세 테이블 → 주문 상품 1건당 1행

이 둘을 조인했으니,
‘주문 × 상품’ 단위로 행이 많아지는 건 당연하죠.

그래서 조인을 검증할 때는
“행이 늘었나?”보다
“이 구조에서 이 정도의 변화가 자연스러운가?”를 보는 게 정확합니다.


📊 반대로 주의해야 할 경우

물론 모든 행 증가가 정상은 아닙니다.

• 1:1 관계인데 행이 늘어난 경우
→ 중복 키 가능성 확인이 필요합니다.
• 1:N 관계인데 행이 줄어든 경우
→ INNER JOIN으로 인해 일부 데이터가 누락됐을 수 있습니다.


정리

✔️ 데이터 구조를 제대로 이해하고 정제해야 조인 결과를 올바르게 해석할 수 있습니다.

profile
협업, 유지보수, 최적화를 고려한 데이터 실무 팁을 정리합니다.

0개의 댓글