오라클 SQL where 인덱스 조건 중 function view 사용이 가능한가요 0 1 557

by 멀미나 [Oracle Tuning] tuning [2019.04.09 13:24:04]


캡처.PNG (170,460Bytes)

안녕하세요 오라클 인덱스 사용시 궁금한 점이 있어 질문을 남깁니다.

아래와 같은 쿼리의 실행계획이 첨부 그림과 같이 나옵니다 

SELECT
/*+ INDEX(A IX_NACC210TL7)*/
 * FROM NACC210TL A
WHERE 1=1
AND NACC210_ACC_YEAR='2018'
AND NACC210_ACC_UNIT_CD='01'
AND NACC210_ACT_CD IN (SELECT ACT_CD FROM TABLE(FV_NACC_ACCT_ACT_CD(:basic_dt, :acc_unit_cd)))
;

IX_NACC210TL7 인덱스 구성은 NACC210_ACC_YEAR / NACC210_ACC_UNIT_CD / NACC210_ACT_CD  순으로 되어 있습니다.

NACC210_ACT_CD 부분의 조건이 제대로 인덱스를 타지 못하는데 힌트 등으로 쿼리 순서를 바꿔줘야하는 것인지

아니면 in 조건 사용시에는 function view 사용 자체가 안되는 것인지 궁금합니다


 

by 마농 [2019.04.09 14:37:26]

subquery 가 unnest 되면서 a -> b 로 merge join 되었네요.
인덱스를 이용하려면 b -> a 로 NL join 되어야 할 것 같아요.
/*+ ORDERED USE_NL(a) */

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