오라클 쿼리 성능이 안나와서
튜닝중에 있는데
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
;
감사해요 마농님