SQLP
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
Nested Loops Join 튜닝: 선행 집합·Predicate·ROWID 비용
원래 이론 →판단 기준
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 혼동 | 정확한 기준 |
|---|---|
| Inner Join Key Index가 있으면 완료 | 후보 per Start·Table Filter·Buffers까지 확인 |
| 조건 Column을 Index에 넣으면 모두 Access Predicate | Column 순서와 첫 Range 이후 조건 역할 확인 |
| Index Filter와 Table Filter는 같은 비용 | Table Filter는 ROWID Table Access 후 탈락 가능 |
| BATCHED면 Random Access 문제 해결 | Block 순서 개선일 뿐 후보 수·Filter 탈락은 유지 |
| Outer Table이 작으면 좋은 Driving | Filter 후 A-Rows와 다음 Probe 비용이 기준 |
| Covering Index는 무조건 좋음 | Index 폭·DML·공간·다른 SQL 비용 동반 |
| Physical Read가 적으면 빠름 | Cache Hit에서도 Logical I/O·CPU 반복 가능 |
| E-Rows와 A-Rows를 직접 비교 | 반복 Operation은 Total·Per-Start 단위 조정 |
| NL Cost가 낮으면 실제 반복도 작음 | Starts·A-Rows·Buffers로 실측 |
| 한 Bind에서 좋은 NL은 모든 Bind에 좋음 | Data Skew·ACS·다른 Child Plan 확인 |
헷갈리는 개념
다음 Index만 있다고 가정합니다.
예시·텍스트좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
CUSTOMERS_REGION_IX(region_code)
도식좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
region_code 조건 후보 50,000행
→ Table Access
→ grade='VIP' Filter
→ 최종 Outer 500행
예시·텍스트좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
Outer Index A-Rows = 50,000
Outer Table A-Rows = 500
Outer Table에서 49,500행이 탈락했습니다.
이 낭비는 두 비용을 만듭니다.
- 불필요한 CUSTOMER Table ROWID Access
- 실제 500행만 Inner Probe를 수행하지만 Optimizer가 후보·최종 분포를 틀리게 추정하면 Join Order·
Method가 왜곡될 가능성
대표 계산·예제
예시·텍스트좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
CUSTOMERS
한 행 = 고객 한 명
ORDERS
한 행 = 주문 한 건
고객 한 명은 여러 주문 보유 가능
특정 지역의 VIP 고객이 최근 결제한 주문을 조회합니다.
SQL좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
SELECT /*+ GATHER_PLAN_STATISTICS */
c.customer_id,
c.customer_name,
o.order_id,
o.order_date,
o.amount
FROM customers c
JOIN orders o
ON o.customer_id = c.customer_id
WHERE c.region_code = :region_code
AND c.grade = 'VIP'
AND o.order_date >= :from_date
AND o.status = 'PAID';
CUSTOMERS가 Outer, ORDERS가 Inner라면 논리적 흐름은 다음과 같습니다.
도식좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
CUSTOMERS 조건을 만족한 Row 1건
→ CUSTOMER_ID 전달
→ ORDERS Index Probe
→ 주문 ROWID Table Access
→ 날짜·상태 조건 확인
→ Match 반환
→ 다음 고객 반복
개념적 Plan입니다.
예시·텍스트좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID CUSTOMERS
INDEX RANGE SCAN CUSTOMERS_REGION_IX
TABLE ACCESS BY INDEX ROWID ORDERS
INDEX RANGE SCAN ORDERS_CUSTOMER_IX
성능 조건입니다.
예시·텍스트좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
작은 Outer 결과
×
작은 Inner 1회 후보
×
적은 Table Filter 탈락
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.