{code:SQL | title= 서브쿼리가 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:SQL | title= 서브쿼리가 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. 가능한 많은 경우의 수를 테스트 해보아야 한다. |