본문 바로가기
DAP 자격증

[DAP자격증] 문제 풀기 (조인에 관하여)

by IronAreum 2025. 3. 27.
728x90
문제 9. 다음 조인 기법에 대한 설명으로 옳은 것은?
1. Sort-Merge Join은 Join하려는 두 집합을 Join Column으로 정렬하여 Sorted - List를 만들고 병합 하는 Join 기법으로, OLTP System에서 활용도가 높다.
2. Hash J oin은 대용량의 데이터 Join 시에 Sort-Merge Join이나 Nested-Loop Join보다 효율적이다.
3. Nested-Loop Join은 Driving Table(Outer Table)과 1nner Table 양쪽 모두 인텍스가 없을 때 효율적인 Join 기법이다.
4. Nested-Loop Join에서 두 Table 간의 Join 시 Driving Table(Outer Table) 과 1nner Table의 결정은 일의 양과 관계가 없다.

여기서 틀린 보기에 대해 맞는답으로 알려줘

 

❌ 보기 1. "Sort-Merge Join은 OLTP 시스템에서 활용도가 높다." (틀림)

Sort-Merge Join은 주로 OLAP(분석 시스템)에서 사용된다.

  • Sort-Merge Join조인 대상 테이블을 정렬한 후 병합(Merge)하는 방식이라 정렬 비용이 크다.
  • OLTP(온라인 트랜잭션) 시스템은 빠른 응답 속도를 요구하기 때문에 정렬 비용이 높은 Sort-Merge Join보다는 Nested-Loop Join이 더 적합하다.
  • Sort-Merge Join은 대량의 데이터를 한꺼번에 처리하는 OLAP(데이터 분석) 시스템에서 주로 활용된다.

✅ 보기 2. "Hash Join은 대용량의 데이터 Join 시에 Sort-Merge Join이나 Nested-Loop Join보다 효율적이다." (맞음)

  • Hash Join해시 테이블을 이용하여 조인을 수행하는 기법으로, 대용량 데이터를 조인할 때 매우 효율적이다.
  • Nested-Loop Join은 작은 데이터셋에서는 효과적이지만, 대량의 데이터에서는 성능이 떨어짐.
  • Sort-Merge Join은 정렬 비용이 높아 대용량 데이터에서는 비효율적일 수 있음.
  • 따라서 대용량 조인에서는 Hash Join이 가장 효율적이다.

❌ 보기 3. "Nested-Loop Join은 Driving Table(Outer Table)과 Inner Table 양쪽 모두 인덱스가 없을 때 효율적인 Join 기법이다." (틀림)

Nested-Loop Join은 Inner Table에 인덱스가 있을 때 효율적이다.

  • Nested-Loop Join은 Driving Table(Outer Table)의 각 행을 읽고, Inner Table에서 해당 행을 찾는 방식이다.
  • 만약 Inner Table에 인덱스가 없다면, Outer Table의 각 행마다 Full Table Scan이 발생하여 성능이 저하된다.
  • 따라서 Nested-Loop Join은 Inner Table에 인덱스가 존재할 때 효과적이다.
  • 양쪽 테이블에 인덱스가 없으면 성능이 매우 낮아지므로, Hash Join이나 Sort-Merge Join을 고려해야 한다.

❌ 보기 4. "Nested-Loop Join에서 Driving Table(Outer Table)과 Inner Table의 결정은 일의 양과 관계가 없다." (틀림)

Driving Table(Outer Table)과 Inner Table의 선택은 성능에 매우 중요한 영향을 미친다.

  • Nested-Loop Join에서는 Driving Table을 작은 테이블로 선택하는 것이 성능상 유리하다.
  • Outer Table(Driving Table)이 클 경우, Inner Table에서 검색해야 하는 횟수가 많아져 성능이 저하된다.
  • 일반적으로 데이터 양이 적은 테이블을 Driving Table로 선택하는 것이 효율적이다.

🔹 정답: 보기 2.

"Hash Join은 대용량의 데이터 Join 시에 Sort-Merge Join이나 Nested-Loop Join보다 효율적이다."

 

728x90
추가질문 : 보기 3번에 양쪽다 인덱스가 없을때 해쉬조인이 적합해? => YES! 

 

🔹 왜 Hash Join이 적합할까?

  • Nested-Loop Join은 Inner Table에 인덱스가 없으면 매번 Full Table Scan이 발생하므로 비효율적임.
  • Sort-Merge Join정렬(Sort) 비용이 크므로, 대량 데이터에서 비효율적일 수 있음.
  • Hash Join은 인덱스 없이도 효율적으로 조인을 수행할 수 있음.
    • 작은 테이블을 해시 테이블로 만들고, 큰 테이블을 스캔하면서 해시 매칭을 수행하는 방식
    • 정렬 과정 없이 해시 값으로 바로 매칭하므로 빠름

📌 즉, 양쪽 테이블에 인덱스가 없을 때는 Nested-Loop Join보다 Hash Join이 더 효율적!


🔹 정리

조인 방식양쪽 테이블 인덱스 없을 때 적합?이유
Nested-Loop Join ❌ (비효율적) Inner Table을 매번 Full Scan해야 해서 느림
Sort-Merge Join ⚠️ (경우에 따라 가능) 정렬 비용이 커서 비효율적일 수 있음
Hash Join ✅ (가장 적합) 해시 테이블을 만들어 빠르게 조인

그래서 보기 3번은 틀렸고, "양쪽 테이블에 인덱스가 없으면 Hash Join이 적합하다"가 맞는 설명이야!

728x90