http://cafe.naver.com/dbstudydapsqlp/2220

 -- 이곳에서 문제 참조 함 



내 답안) 


select /*+ ordered use_nl(p4) rowid(p4) */ p4.prod_nm, p.prod_id, p3.order_qty 

 from ( select /*+ no_merge ordered use_hash(o) */ p2.rid, o.order_qty 

         from ( select /*+ ordered use_nl(p1) */ p1.m_code, p1.prod_id 

                  from , t_manuf m, t_product p1 

                 where p1.m_code = m.m_code 

                  and m.m_code between 'M00001' and 'M00100' ) p2 

               , order_qty o

          where p2.prod_id = o.prod_id 

           and o.order_dt = '20160412'

           and o.order_qty > 9000 

        ) p3 

        , t_product p4 

 where p3.rid = p4.rowid 

;


-- 참조한 곳의 답안과 약간 다른데 난 실행계획의 hash 까지 좀 표현하려고 in-line view를 한번 더 씀 

-- 그런데 처음에 답을 보지 않고 답안을 작성했을 때 no_merge 힌트를 사용하지는 않았음 

    이 부분은 문제의 소지가 좀 있음 view merging 은 10g 부터 비용 기반 변환이라서 

    힌트를 사용하지 않으면 어떻게 될지 잘 모름 그런데 만약 바깥에 in-line view가 view merging 되면 

    위의 쿼리는 튜닝 되지 않았을 것임 

    그래서 no_merge 힌트는 써주는 것이 맞았을 것 같음 



'ORACLE > SQLP' 카테고리의 다른 글

성능고도화 1-2. 인덱스 기본원리  (0) 2016.12.26
성능고도화 1-1. 인덱스 구조  (0) 2016.12.26
SQLP 시험문제 11일차  (0) 2016.11.24
SQLP 시험 문제 7일차  (0) 2016.11.24
SQLP 시험문제 6일차  (0) 2016.11.24

+ Recent posts