엔코어 세미나에서
Range+List 의 경우 range(YY, MM) + list(DD) 의 경우
DD 만 where 절에 있어도 인덱스를 탄다고 하였는데,
어떻게 인덱스를 생성해야 되는지 모르겠네요.
drop table test_range_list;
CREATE TABLE test_range_list
(yy VARCHAR2(4),
mm VARCHAR2(2),
dd VARCHAR2(2)
)
PARTITION BY RANGE (yy, mm)
SUBPARTITION BY LIST (dd)
(PARTITION range_part01 VALUES LESS THAN ('2005', '07') TABLESPACE GXG_bill02
(SUBPARTITION VALUES ('01'),
SUBPARTITION VALUES ('02'),
SUBPARTITION VALUES ('03'),
SUBPARTITION VALUES ('04')),
PARTITION range_part02 VALUES LESS THAN ('2008', '07') TABLESPACE GXG_BILL03
(SUBPARTITION VALUES ('01'),
SUBPARTITION VALUES ('02'),
SUBPARTITION VALUES ('03'),
SUBPARTITION VALUES ('04'))
);
-- 테스트 데이터 인써트
INSERT INTO test_range_list VALUES('2002', '06', '01');
INSERT INTO test_range_list VALUES('2003', '06', '02');
INSERT INTO test_range_list VALUES('2004', '04', '03');
INSERT INTO test_range_list VALUES('2005', '02', '04');
INSERT INTO test_range_list VALUES('2006', '01', '01');
COMMIT;
CREATE INDEX compo_local_pre_idx22
ON test_range_list(yy, mm, dd) LOCAL
(
PARTITION range_part01 TABLESPACE gxg_bill_idx01,
PARTITION range_part02 TABLESPACE gxg_bill_idx02
)
-- 인덱스 탐
select * from test_range_list
where yy = '2004' and mm = '04';
-- 인덱스 안탐
select * from test_range_list where dd = '01';