SQLP

시험 직전 요약장

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

이론 목록

Nested Loops Join 튜닝: 선행 집합·Predicate·ROWID 비용

원래 이론 →

판단 기준

혼동정확한 기준
Inner Join Key Index가 있으면 완료후보 per Start·Table Filter·Buffers까지 확인
조건 Column을 Index에 넣으면 모두 Access PredicateColumn 순서와 첫 Range 이후 조건 역할 확인
Index Filter와 Table Filter는 같은 비용Table Filter는 ROWID Table Access 후 탈락 가능
BATCHED면 Random Access 문제 해결Block 순서 개선일 뿐 후보 수·Filter 탈락은 유지
Outer Table이 작으면 좋은 DrivingFilter 후 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만 있다고 가정합니다.

예시·텍스트
CUSTOMERS_REGION_IX(region_code)
도식
region_code 조건 후보 50,000행
→ Table Access
→ grade='VIP' Filter
→ 최종 Outer 500행
예시·텍스트
Outer Index A-Rows = 50,000
Outer Table A-Rows =    500

Outer Table에서 49,500행이 탈락했습니다.

이 낭비는 두 비용을 만듭니다.

  1. 불필요한 CUSTOMER Table ROWID Access
  2. 실제 500행만 Inner Probe를 수행하지만 Optimizer가 후보·최종 분포를 틀리게 추정하면 Join Order·Method가 왜곡될 가능성
이 부분의 원문 →

대표 계산·예제

예시·텍스트
CUSTOMERS
  한 행 = 고객 한 명

ORDERS
  한 행 = 주문 한 건
  고객 한 명은 여러 주문 보유 가능

특정 지역의 VIP 고객이 최근 결제한 주문을 조회합니다.

SQL
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라면 논리적 흐름은 다음과 같습니다.

도식
CUSTOMERS 조건을 만족한 Row 1건
→ CUSTOMER_ID 전달
→ ORDERS Index Probe
→ 주문 ROWID Table Access
→ 날짜·상태 조건 확인
→ Match 반환
→ 다음 고객 반복

개념적 Plan입니다.

예시·텍스트
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

성능 조건입니다.

예시·텍스트
작은 Outer 결과
×
작은 Inner 1회 후보
×
적은 Table Filter 탈락

이 부분의 원문 →

내 최근 연습 오답

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

학습 기록 →

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