파티션 프루닝(Partition Pruning)이란 파티셔닝 컬럼이 조건절에 조건으로 들어왔을 때 해당 파티션만 읽고 대상이 아닌 파티션을 스캔하지 않는 기법을 말한다.
예를 들어
거래 일자 기준으로 파티셔닝된 대용량 테이블이 있다고 가정한다.
조건절에 거래일자가 없거나 묵시적 형 변환이 발생하면 테이블 내에 모든 파티션을 스캔해야 한다.(PARTITION RANGE ALL)
즉, 파티션 프루닝이 되지 않습니다.
조건절에 거래일자가 있으면 해당 파티션만 읽고 스캔을 멈추게 된다.(PARTITION RANGE ITERATOR)
즉, 파티션 프루닝이 동작하게 된다.
파티션 프루닝이 동작하도록 조건절 튜닝하기
테이블 생성
CREATETABLETB_TRD( TRD_NO VARCHAR2 (15), -- 거래번호 TRD_DT VARCHAR2 (8), -- 거래일자 TRD_AMT NUMBER (15), -- 거래금액 CUST_ID VARCHAR2 (10), -- 고객ID PRDT_CD VARCHAR2 (6), -- 상품코드 INST_ID VARCHAR2 (50), -- 입력자ID INST_DTM DATE-- 입력일시)PARTITIONBYRANGE (TRD_DT) (PARTITION P_TB_TRD_201409 VALUES LESS THAN ('20141001'),PARTITION P_TB_TRD_201410 VALUES LESS THAN ('20141101'),PARTITION P_TB_TRD_201411 VALUES LESS THAN ('20141201'),PARTITION P_TB_TRD_201412 VALUES LESS THAN ('20150101'),PARTITION P_TB_TRD_201501 VALUES LESS THAN ('20150201'),PARTITION P_TB_TRD_201502 VALUES LESS THAN ('20150301'),PARTITION P_TB_TRD_201503 VALUES LESS THAN ('20150401'),PARTITION P_TB_TRD_201504 VALUES LESS THAN ('20150501'),PARTITION P_TB_TRD_201505 VALUES LESS THAN ('20150601'),PARTITION P_TB_TRD_201506 VALUES LESS THAN ('20150701'),PARTITION P_TB_TRD_201507 VALUES LESS THAN ('20150801'),PARTITION P_TB_TRD_201508 VALUES LESS THAN ('20150901'),PARTITION P_TB_TRD_201509 VALUES LESS THAN ('20151001'),PARTITION P_TB_TRD_MAX VALUES LESS THAN (MAXVALUE) );CREATETABLEDUAL_10( DUMMY VARCHAR2 (1));