SQLP
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
Hash Join의 원리와 Workarea: Build·Probe·PGA·TEMP Spill
원래 이론 →판단 기준
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 혼동 | 정확한 기준 |
|---|---|
| 작은 원본 Table이 Build | Filter 후 A-Rows×Row 폭으로 판단 |
| Hash Join은 항상 두 Table Full Scan | 각 입력 Access Path는 별도 선택 |
| 같은 Hash 값이면 Match | Bucket 후보 후 실제 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보다 저렴할 수 있음 |
헷갈리는 개념
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 기준 | Nested Loops | Hash Join | Sort Merge |
|---|---|---|---|
| 구조 | Outer마다 Inner Probe | Build 후 Probe | Sort 후 Merge |
| 대표 조건 | 작은 Outer·효율적 Index | 대량 Equijoin | Non-Equijoin·정렬 활용 |
| 최초 행 | 빠를 수 있음 | Build 후 가능 | Sort 후 가능 |
| Full Fetch | 반복이 크면 불리 | 강점 | 조건에 따라 경쟁 |
| Memory | Access Path 중심 | Hash Workarea | Sort Workarea |
| TEMP | 보통 Join 자체는 적음 | Spill 시 사용 | Sort Spill 시 사용 |
| 핵심 지표 | Starts·Inner Buffers | Build A-Rows·O/1/M·TEMP | SORT A-Rows·TEMP |
공정한 비교 조건입니다.
- 동일 결과
- 동일 Bind·
Data Type - 동일 Statistics
- 동일 Parallel Degree
- 동일 Fetch 범위
- 동일 Projection
- 유사한 Cache 상태
대표 계산·예제
SQL좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
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입니다.
예시·텍스트좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
HASH JOIN
TABLE ACCESS FULL CUSTOMERS
TABLE ACCESS FULL ORDERS
흐름입니다.
예시·텍스트좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
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보다 저렴할 수 있습니다.
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.