오라클 쿼리 성능이 안나와서
튜닝중에 있는데
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
이런구조의 쿼리인데 힌트적용이 안됩니다.
혹시 인라인뷰는 힌트적용이 안되는건가요??
쿼리변환과정 중 하나인 뷰머징이 되면서 인라인뷰가 사라져서 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 ;