4.8 On Option 전략

{code:SQLtitle= 서브쿼리가 3개인 경우의 Trace 내용borderStyle=solid}
******************************
PARAMETERS WITH ALTERED VALUES
******************************
_optimizer_cost_based_transformation = on
SU: Using search type: exhaustive -- 'PARAMETERS WITH ALTERED VALUES' 항목에 먼저 나타난다.
SU: Starting iteration 1, state space = (2,3,4) : (1,1,1)
SU: Updated best state, Cost = 1435.51 --> 각 Iteration별로 Cost를 구하여 최저 Cost일 경우 Best State(최적상태)로 Update.
SU: Starting iteration 2, state space = (2,3,4) : (1,1,0)
SU: Not update best state, Cost = 385405.50 --> Cost가 Iteration 1보다 높으므로 Update하지 않는다.
SU: Starting iteration 3, state space = (2,3,4) : (1,0,1)
SU: updated best state, Cost = 1425.02 --> 최저 Cost이므로 Best State(최적상태)로 Update.
SU: Starting iteration 4, state space = (2,3,4) : (1,0,0)
SU: Not update best state, Cost = 385390.90
SU: Starting iteration 5, state space = (2,3,4) : (0,1,1)
SU: Not update best state, Cost = 22208.92
SU: Starting iteration 6, state space = (2,3,4) : (0,1,0)
SU: Not update best state, Cost = 385004.97
SU: Starting iteration 7, state space = (2,3,4) : (0,0,1)
SU: Not update best state, Cost = 18244.64
SU: Starting iteration 8, state space = (2,3,4) : (0,0,0)
SU: Not update best state, Cost = 406160.14
SU: Will unnest subquery SUBQ3 (#2) --> (1,0,1) 이므로 서브쿼리블록 1과 3이 Unnesting되었다.
SU: Will not unnest subquery SUBQ2 (#3)
SU: Will unnest subquery SUBQ1 (#4)
SU: Reconstructing original query from best state. --> best state(Iteration 3)로부터 Original Query 재작성
{code}
* 오라클입장에서 서브쿼리가 3개인경우 Exhaustive Type을 적용해도 큰 부하가 없다고 판단.
* 서브쿼리 2개인경우, 4개인경우에도 Exhaustive Type으로 적용됨
{code:SQLtitle= 서브쿼리가 5개인 경우의 Trace 내용borderStyle=solid}
******************************
PARAMETERS WITH ALTERED VALUES
******************************
_optimizer_cost_based_transformation = on
SU: Using search type: linear --> linear로 변경되었다.
{code}
{code:SQL
title= 서브쿼리가 7개인 경우의 Trace 내용borderStyle=solid}
******************************
PARAMETERS WITH ALTERED VALUES
******************************
_optimizer_cost_based_transformation = on
SU: Using search type: Two_pass --> Two_pass 변경되었다.
{code}
* on Type이 상황에 따라 가장 변화가 많다.
* CBQT를 관장하는 파라미터를 On으로 바꾸고 싶은 생각이 든다면 자제하라
* 그래도 바꾸고싶다면 2가지 조건을 만족해야한다.
1. 오라클 검증을 받아야한다.
2. 가능한 많은 경우의 수를 테스트 해보아야 한다.