SQL 쿼리를 수행하고 있으며 실행하는 데 너무 오래 걸리므로 최적화하려고합니다.oracle select query - 여러 열에 대한 인덱스
사이에 몇 가지 선택 및 UNION이 있습니다. 모든 선택 항목은 동일한 테이블에 있지만 WHERE 절의 조건이 다릅니다. 는 기본적으로 나는에 allways 같은 있습니다
select * from A
where field1 <=TO_DATE ('01/01/2010', 'DD/MM/YYYY')
AND field1 >= TO_DATE(some date)
and field2 IN (...)
UNION
select * from A
where field1 <=TO_DATE ('01/01/2010', 'DD/MM/YYYY')
AND field1 >= TO_DATE(some date2)
and field2 =(...)
UNION
....
내가 필드 1에 인덱스가 (이 날짜 필드를, 그리고 FIELD2는 숫자입니다). 지금, 나는 선택을하고 난 단지
WHERE field1 <TO_DATE ('01/01/2010', 'DD/MM/YYYY')
넣어 경우는 인덱스를 사용하지 않을 때. 나는 일반 설명보기 위해 두꺼비를 사용하고 있는데 말했다 :
SELECT STAITEMENT Optimiser Mode = CHOOSE
TABLE ACCESS FULL
그것은 거대한 테이블이며,이 컬럼에 인덱스가 있습니다.
이 최적화 도구에 대한 의견이 있으십니까? 왜 인덱스를 사용하지 않습니까?
또 다른 질문은 field1과 field2에 where 절이 있으면 각 필드에 하나의 인덱스 또는 하나의 인덱스 만 만들어야한다는 것입니다.
실제로 하나의 날짜 필드와 숫자 필드가 있습니다. –