쿼리 변환이란?

쿼리 변환이란?

  • 쿼리 변환(Query Transformation)은 쿼리 옵티마이저가 SQL을 분석해 의미적으로
    동일(-> 같은 결과를 리턴)하면서도 더 나은 성능이 기대되는 형태로 재작성하는 것을 말한다.
  • '논리적 최적화(Logical Optimization)'라고도 하며, 그 이후의 단계를 '물리적 최적화(Physical Optimization)'라고
    부르기도 한다.
  • 오라클 버전에 따른 쿼리 변환의 변화
버전내용
8i복합 뷰(Complex View) Merging 을 사용자 힌트에 의해서만 수행
9i결과가 보장될 수 있는 형태라면 무조건 변환 시도
10gCBO 모드로 동작하기 시작 (쿼리 변환의 결과가 더 나은 성능을 낼 것으로 판단될 때만 수행)

쿼리 변환의 종류

  1. 서브쿼리 Unnesting
  2. 뷰 Merging
  3. 조건절 Pushing
  4. 조건절 이행
  5. 공통 표현식 제거
  6. Outer 조인을 Inner 조인으로 변환
  7. 실체화 뷰 쿼리로 재작성
  8. Star 변환
  9. Outer 조인 뷰에 대한 조인 조건 Pushdown
  10. OR-expansion

쿼리 변환의 방식

  • 휴리스틱(Heuristic) 쿼리 변환 : 결과만 보장된다면 무조건 쿼리 변환 수행.
  • 비용기반(Cost-based) 쿼리 변환 : 변환된 쿼리의 비용이 더 낮을 때만 사용, 그렇지 않으면 원본 쿼리 그대로 최적화 수행.
버전내용
9i1~6 휴리스틱 쿼리 변환에 해당. 나머지 비용기반 쿼리 변환에 해당
10g1 서브쿼리 Unnesting , 2 뷰 Merging, 3 조건절 Pushing 중 조인 조건 Pushdown도 비용기반으로 전환되었음