오라클 힌트 먹일 때 궁금한 점이 있어요 ~! 0 3 2,204

by 동글이 오라클 힌트 튜닝 [2022.11.18 13:16:30]


오라클 쿼리 성능이 안나와서

튜닝중에 있는데

leading 테이블을 변경해서 인덱스를 태우려고 하거든요

근데 

select /*+ leading( a b ) use_nl ( a b ) */

  from (select t.*

            from t

           where t.date between &from_dt and &to_dt ) a

      , b

where a.id = b.id 

 

이런구조의 쿼리인데 힌트적용이 안됩니다.

혹시 인라인뷰는 힌트적용이 안되는건가요??

by 우리집아찌 [2022.11.18 15:58:24]

인덱스 힌트도 같이 써보세요.


by 마농 [2022.11.21 09:20:15]

쿼리변환과정 중 하나인 뷰머징이 되면서 인라인뷰가 사라져서 a 가 없어서 그래요.
뷰머징인 안되도록 하는 힌트를 추가하거나
아니면 아예 자체 뷰머징을 하세요.
 

-- 1. 뷰머징 방지 --
SELECT /*+ leading(a b) use_nl(b) */
       ...
  FROM (SELECT /*+ no_merge */
               ...  -- * 보다는 필요한 항목만 나열
          FROM t
         WHERE t.date BETWEEN &from_dt AND &to_dt
        ) a
     , b
 WHERE a.id = b.id
;

-- 2. 자체 뷰머징
SELECT /*+ leading(a b) use_nl(b) */
       ...
  FROM t a
     , b
 WHERE a.date BETWEEN &from_dt AND &to_dt
   AND a.id = b.id
;

 


by 동글이 [2022.11.24 14:48:56]

감사해요 마농님

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입