PARTITION FOR 절을 사용하여 Nonprefix 로컬 인덱스의 테이블 액세스를 제거한 개선 사례를 살펴보자.
테스트를 위해 아래와 같이 테이블과 인덱스를 생성하자. 파티션 키인 ym은 파티션 별로 유일하며, t1_x1 인덱스는 파티션 키가 포함되지 않은 Nonprefix 로컬 인덱스다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
-- 1 DROP TABLE t1 PURGE; CREATE TABLE t1 ( ym VARCHAR2(6) , cd VARCHAR2(1)) PARTITION BY RANGE (ym) ( PARTITION p1 VALUES LESS THAN ( '205001' ) , PARTITION p2 VALUES LESS THAN ( '205002' ) , PARTITION pm VALUES LESS THAN (MAXVALUE)); CREATE INDEX t1_x1 ON t1 (cd) LOCAL ; INSERT INTO t1 VALUES ( '205001' , 'A' ); INSERT INTO t1 VALUES ( '205001' , 'B' ); INSERT INTO t1 VALUES ( '205001' , 'C' ); COMMIT ; |
아래 쿼리는 ym이 205001인 행을 필터링하기 위해 테이블을 액세스했다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
-- 2 SELECT 1 FROM t1 WHERE ym = '205001' AND cd = 'A' ; -------------------------------------------------------------------------------------- | Id | Operation | Name | Pstart| Pstop | Buffers | -------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 3 | | 1 | PARTITION RANGE SINGLE | | 1 | 1 | 3 | |* 2 | TABLE ACCESS BY LOCAL INDEX ROWID BATCHED| T1 | 1 | 1 | 3 | |* 3 | INDEX RANGE SCAN | T1_X1 | 1 | 1 | 2 | -------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - filter( "YM" = '205001' ) 3 - access( "CD" = 'A' ) |
파티션 별로 파티션 키 값이 유일하기 때문에 PARTITION FOR 절로 테이블 액세스를 제거할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 |
-- 3 SELECT 1 FROM t1 PARTITION FOR ( '205001' ) WHERE cd = 'A' ; ------------------------------------------------------------------ | Id | Operation | Name | Pstart| Pstop | Buffers | ------------------------------------------------------------------ | 0 | SELECT STATEMENT | | | | 2 | | 1 | PARTITION RANGE SINGLE| | 1 | 1 | 2 | |* 2 | INDEX RANGE SCAN | T1_X1 | 1 | 1 | 2 | ------------------------------------------------------------------ |
'Oracle > Tuning' 카테고리의 다른 글
PQ_REPLICATE 힌트 (1) | 2018.03.03 |
---|---|
Nonprefix 로컬 인덱스와 소트 #2 (1) | 2018.03.02 |
조인 방식에 따른 부분 범위 처리 (0) | 2018.03.02 |
인덱스와 테이블 액세스의 세 가지 원리 (0) | 2015.03.24 |
Nonprefix 로컬 인덱스와 소트 #1 (0) | 2014.04.23 |