SQLP

시험 직전 요약장

판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.

이론 목록

Hash Join의 원리와 Workarea: Build·Probe·PGA·TEMP Spill

원래 이론 →

판단 기준

혼동정확한 기준
작은 원본 Table이 BuildFilter 후 A-Rows×Row 폭으로 판단
Hash Join은 항상 두 Table Full Scan각 입력 Access Path는 별도 선택
같은 Hash 값이면 MatchBucket 후보 후 실제 Key 재비교
Collision은 결과 중복Duplicate Key가 결과 조합을 증가
OPTIMAL이면 I/O 없음Workarea Spill 없음, 입력 I/O는 존재
TEMP를 쓰면 PGA만 증가입력·폭·추정·Skew·동시성 먼저 분석
Hash Join은 첫 행에도 항상 최고Build 완료 전 최초 결과가 늦을 수 있음
USE_HASH가 Join Order도 결정LEADING·ORDERED가 별도 필요
Hash Join 결과는 Key 순서ORDER BY만 결과 순서 보장
Full Scan이 보이면 비효율대량 처리에서는 Random Access보다 저렴할 수 있음

이 부분의 원문 →

헷갈리는 개념

기준Nested LoopsHash JoinSort Merge
구조Outer마다 Inner ProbeBuild 후 ProbeSort 후 Merge
대표 조건작은 Outer·효율적 Index대량 EquijoinNon-Equijoin·정렬 활용
최초 행빠를 수 있음Build 후 가능Sort 후 가능
Full Fetch반복이 크면 불리강점조건에 따라 경쟁
MemoryAccess Path 중심Hash WorkareaSort Workarea
TEMP보통 Join 자체는 적음Spill 시 사용Sort Spill 시 사용
핵심 지표Starts·Inner BuffersBuild A-Rows·O/1/M·TEMPSORT A-Rows·TEMP

공정한 비교 조건입니다.

  • 동일 결과
  • 동일 Bind·Data Type
  • 동일 Statistics
  • 동일 Parallel Degree
  • 동일 Fetch 범위
  • 동일 Projection
  • 유사한 Cache 상태

이 부분의 원문 →

대표 계산·예제

SQL
SELECT /*+ GATHER_PLAN_STATISTICS */
       c.customer_id,
       c.customer_name,
       o.order_id,
       o.order_date,
       o.order_amount
FROM   customers c
JOIN   orders o
  ON   o.customer_id=c.customer_id
WHERE  c.region_code=:region_code
AND    o.order_date>=:from_date;

개념적 Plan입니다.

예시·텍스트
HASH JOIN
  TABLE ACCESS FULL CUSTOMERS
  TABLE ACCESS FULL ORDERS

흐름입니다.

예시·텍스트
1. region_code 조건을 통과한 CUSTOMERS Row Source 생성
2. CUSTOMER_ID Hash Table Build
3. 날짜 조건을 통과한 ORDERS Row Source 생성
4. 주문 CUSTOMER_ID Hash 계산
5. Bucket 후보 탐색
6. 실제 CUSTOMER_ID 비교
7. 결과 반환

Full Scan이 보인다는 이유만으로 비효율이라고 판단하지 않습니다. 많은 Row가 필요하면 Full Scan+Hash Join이 수많은 Index Random Access보다 저렴할 수 있습니다.


이 부분의 원문 →

내 최근 연습 오답

현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.

학습 기록 →

오답 기록을 확인하고 있습니다.