프록그램에서 패키지의 쿼리를 호출하여 조회 되는데
넘겨 받는 인자가 p_item. from_dt, to_dt, ... 등이 있습니다.
p_item이 있을경우 해당 테이블T에서 전체데이터에 대해서 p_item 값으로 인덱스를 타서 조회가 됩니다.
만약 p_item이 없을 경우는 from_dt와 to_dt로 T테이블에서 기간범위가 주어져서 조회가 됩니다.
SELECT
...
FROM T
WHERE 1=1
AND ...
AND ...
(
(
-- A
p_item IS NULL
AND 1=1
)
OR
(
-- B
p_item IS NOT NULL
AND item IN (
SELECT REGEXP_SUBSTR('A,B,C', '[^,]+', 1, LEVEL)
FROM DUAL
CONNECT BY REGEXP_SUBSTR('A,B,C', '[^,]+', 1, LEVEL) IS NOT NULL
)
)
)
이럴경우 조회가 인덱스 안타는지 한참 걸립니다.
쿼리에 B조건만 WHERE절에 두면 INDEX 중에 5번을 타면서 조회가 빨리 되구요
저렇게 2개의 조건에 따른처리 들어가니 인덱스를 안타는지 오래 걸립니다.
USE_CONCAT 이나 그런거 써서 해야 되나요?