작업TABLE
START_DATE VARCHAR2(8)
START_TIME VARCHAR2(4)
END_DATE VARCHAR2(8)
END_TIME VARCHAR2(4)
INDEX는 INDEX01 ( START_DATE + END_DATE ) 생성
원하는 내용은 아래와 같이 특정 시간이 어느 작업대의 DATA를 가져 와야 됩니다.
SELECT *
FROM 작업TABLE
WHERE START_DATE||START_TIME <= '202010300240'
AND END_DATE||START_TIME > '202010300240'
START_TIME||START_TIME로 연결되어 있으니 인덱스를 만들어도 안먹히는데
START_DATE||START_TIME을 하나의 컬럼(DATE 타입)을 만들어서 관리 하는것(기존운영중인 시스템으로이 방법은 제외) 이외에
방법이 있을까요 ?
위 쿼리로 FUNCTION을 만들고 외부 쿼리로 이 FUNCTION을 CALL 해야 되는데 CALL 하는 데이타가 많을수록 속도는 더 느려지네요
아래의 방법으로 조금 줄일려고 해보았으나 이역시 데이타가 많으니 확연히 느려 지네요
SELECT /*+ INDEX( A INDEX01 ) +*/
*
FROM 작업TABLE A
WHERE START_DATE <= '2019103'
AND END_DATE >= '2019103'
AND START_DATE||START_TIME <= '201910300240'
AND END_DATE||START_TIME > '201910300240'
인덱스를 2개를 동시 사용하는등의 방법이 있을까요 ?
감사합니다.