2017-11-14 7 views
0

Oracle 12c에는 500M 레코드의 테이블이 있습니다. 테이블은 1 개의 varchar 열에 대해 분할되고 다른 varchar 열마다 하위로 분할됩니다.Oracle 12c - 파티션 및 하위 파티션이있는 테이블에 대해 인덱스를 사용해야합니다.

Where 절에서이 두 열을 사용하는 쿼리에 어떤 인덱스를 사용해야합니까?

저는 로컬 파티션 된 인덱스가 최선의 선택이라고 생각하고 있지만이 경우 언제 더 좋은 통찰력을 얻고 싶고 어떻게 만들 수 있습니까?

답변

0

오라클은 partition pruning을 사용할 수 있습니다. 즉, 쿼리에 where 절에 파티션 키 열이있는 경우 Oracle은 관련성이있는 파티션 만 쿼리 할만큼 똑똑합니다. 그러한 경우 local partitioned index은 "파티션에 로컬"이기 때문에 더 유용합니다. 즉, 인덱스도 동일한 방식으로 파티션되고 오라클은 관련 파티션에 대한 관련 인덱스 항목 만 읽습니다.

where 절에 파티션 키 열이없는 쿼리가있는 경우 Oracle은 파티션 정리를 적용 할 수 없으며 다른 선택 사항이 없지만 모두 local partitioned indexes 또는 최악의 경우를 스캔해야합니다. 데이터에 대한 전체 테이블. 여기서 전역 파티션 된 인덱스는 where 절에있는 컬럼에서 유용합니다. 이 경우 오라클은 파티션에서 해당 컬럼에 대한 인덱스를 생성하고 구문의 where 절에 적합한 파티션에서 어떤 레코드를 읽을 것인지 정확하게 알고 있습니다.