SQLP
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
Query Transformation 기초: Query Block·동등 변환·Plan 탐색
원래 이론 →판단 기준
Oracle Optimizer의 전체 흐름은 다음 세 역할로 나누어 이해할 수 있습니다.
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 역할 | 핵심 질문 | 대표 산출물 |
|---|---|---|
| Query Transformer | 같은 결과를 만드는 다른 Query 형태가 있는가? | Unnesting·Merging·Pushing·Expansion 후보 |
| Estimator | 각 후보에서 몇 행이 남고 어느 정도 자원이 필요한가? | Selectivity·Cardinality·Cost 추정 |
| Plan Generator | 어떤 Access·Join·Sort 조합이 가장 유리한가? | 최종 실행계획 |
예를 들어 다음 SQL을 생각해 봅니다.
SQL좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
SELECT o.order_id,
o.customer_id
FROM orders o
WHERE EXISTS (
SELECT 1
FROM customers c
WHERE c.customer_id = o.customer_id
AND c.grade = 'VIP'
);
Query Transformer는 EXISTS Subquery를 Semi Join 형태로 Unnesting할 수 있는지 검토합니다. Validity를 통과하면 CUSTOMERS가 Main Query의 Join 후보로 들어올 수 있습니다. Estimator는 VIP 고객 수와 주문 Match 수를 추정하고, Plan Generator는 NESTED LOOPS SEMI, HASH JOIN SEMI 등의 물리 후보를 비교합니다.
도식좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
EXISTS Subquery
→ Unnesting Validity 검토
→ Semi Join 논리 후보 생성
→ Cardinality·Cost 추정
→ Join Order·Join Method 비교
→ 물리 Operation 선택
헷갈리는 개념
다음은 논리 Transformation입니다.
예시·텍스트좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
Subquery Unnesting
View Merging
Predicate Pushing
OR Expansion
Join Elimination
Join Factorization
다음은 실행계획의 물리 Operation입니다.
예시·텍스트좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
TABLE ACCESS FULL
INDEX RANGE SCAN
NESTED LOOPS SEMI
HASH JOIN ANTI
FILTER
VIEW
SORT GROUP BY
UNION-ALL
관계는 다음과 같습니다.
도식좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
논리 변환 후보 생성
→ 새로운 물리 Plan 탐색 공간 개방
→ Cardinality·Cost 비교
→ 물리 Operation 조합 선택
예를 들어 UNION-ALL이 보이면 OR Expansion일 가능성이 있지만, 원래 SQL에 이미 UNION ALL이 있었거나 다른 Transformation에서 생성됐을 수도 있습니다. 따라서 Operation 한 줄만 보고 변환 이력을 단정하지 않고 Query Text·
대표 계산·예제
예를 들어 다음 EXISTS는 고객별 존재 여부만 확인하므로 고객 한 행을 최대 한 번 반환합니다.
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.