"튜닝 쿼리 변형"의 두 판 사이의 차이
DB CAFE
(→서브쿼리 Unnesting) |
|||
6번째 줄: | 6번째 줄: | ||
# 옵티마이져가 동일한 결과를 보장하는 조인문으로 변환하고 나서 최적화 하는것 이를 '서브쿼리 Unnesting' 이라고 함. | # 옵티마이져가 동일한 결과를 보장하는 조인문으로 변환하고 나서 최적화 하는것 이를 '서브쿼리 Unnesting' 이라고 함. | ||
# 서브쿼리를 메인쿼리와 같은 레벨로 풀어 내서 다양한 엑세스 경로와 조인 메소드를 평가 할수 있음. | # 서브쿼리를 메인쿼리와 같은 레벨로 풀어 내서 다양한 엑세스 경로와 조인 메소드를 평가 할수 있음. | ||
− | # 옵티마이저는 조인 형태로 변환했을때 더 나은 실행계획을 찾을 가능성이 | + | # 옵티마이저는 조인 형태로 변환했을때 더 나은 실행계획을 찾을 가능성이 높다 |
− | # | + | # 변환된 쿼리의 예상 비용이 더 낮을 때만 Unnesting된 버전을 사용, 그렇지 않을 때는 원본 쿼리 그대로 필터 방식으로 최적화 한다. |
==== unnest 힌트 ==== | ==== unnest 힌트 ==== | ||
: 서브쿼리를 Unnesting 함을써 조인방식으로 최적화하도록 유도. | : 서브쿼리를 Unnesting 함을써 조인방식으로 최적화하도록 유도. |
2022년 2월 8일 (화) 17:30 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 쿼리 변환 종류[편집]
- 10g부터는 서브쿼리 Unnesting과 뷰 Merging이 비용기반 쿼리 변환으로 전환됨
- 조건절 Pushing 중 조인 조건 pushdown도 비용기반 쿼리 변화으로 전환
- 나머지는 변환된 쿼리가 항상 더 나은 성능을 제공하므로 비용기반으로 전환이 불필요
1.1 서브쿼리 Unnesting[편집]
- 옵티마이져가 동일한 결과를 보장하는 조인문으로 변환하고 나서 최적화 하는것 이를 '서브쿼리 Unnesting' 이라고 함.
- 서브쿼리를 메인쿼리와 같은 레벨로 풀어 내서 다양한 엑세스 경로와 조인 메소드를 평가 할수 있음.
- 옵티마이저는 조인 형태로 변환했을때 더 나은 실행계획을 찾을 가능성이 높다
- 변환된 쿼리의 예상 비용이 더 낮을 때만 Unnesting된 버전을 사용, 그렇지 않을 때는 원본 쿼리 그대로 필터 방식으로 최적화 한다.
1.1.1 unnest 힌트[편집]
- 서브쿼리를 Unnesting 함을써 조인방식으로 최적화하도록 유도.
1.1.2 no_unnesting 힌트[편집]
- 서브쿼리를 그대로 둔 상태에서 필터 방식으로 최적화 하도록 유도.