PARTITION FOR 절을 사용하여 Nonprefix 로컬 인덱스의 테이블 액세스를 제거한 개선 사례를 살펴보자.
테스트를 위해 아래와 같이 테이블과 인덱스를 생성하자. 파티션 키인 ym은 파티션 별로 유일하며, t1_x1 인덱스는 파티션 키가 포함되지 않은 Nonprefix 로컬 인덱스다.
-- 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인 행을 필터링하기 위해 테이블을 액세스했다.
-- 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 절로 테이블 액세스를 제거할 수 있다.
-- 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 |

