【发布时间】:2017-06-02 17:23:18
【问题描述】:
我在一个表上创建了一个复合范围列表分区,它遵循以下示例代码。
CREATE TABLE sample_regional_sales
(deptno number, item_no varchar2(20),
txn_date date, txn_amount number, state varchar2(2))
PARTITION BY RANGE (txn_date)
SUBPARTITION BY LIST (state)
(PARTITION q1_1999 VALUES LESS THAN (TO_DATE('1-APR-1999','DD-MON-YYYY'))
TABLESPACE tbs_1
(SUBPARTITION q1_1999_northwest VALUES ('OR', 'WA'),
SUBPARTITION q1_others VALUES (DEFAULT) TABLESPACE tbs_4
),
PARTITION q2_1999 VALUES LESS THAN ( TO_DATE('1-JUL-1999','DD-MON-YYYY'))
TABLESPACE tbs_2
(SUBPARTITION q2_1999_northwest VALUES ('OR', 'WA'),
SUBPARTITION q2_1999_southcentral VALUES ('OK', 'TX')
),
PARTITION q3_1999 VALUES LESS THAN (TO_DATE('1-OCT-1999','DD-MON-YYYY'))
TABLESPACE tbs_3
(SUBPARTITION q3_1999_northwest VALUES ('OR', 'WA'),
SUBPARTITION q3_others VALUES (DEFAULT) TABLESPACE tbs_4
),
PARTITION q4_1999 VALUES LESS THAN ( TO_DATE('1-JAN-2000','DD-MON-YYYY'))
TABLESPACE tbs_4
);
我能够在范围分区上创建索引:
create index SOME_INDEX_NAME on sample_regional_sales (txn_date) global
PARTITION by range (txn_date)
(
PARTITION q1_1999 VALUES LESS THAN (TO_DATE('1-APR-1999','DD-MON-YYYY')),
PARTITION q2_1999 VALUES LESS THAN (TO_DATE('1-JUL-1999','DD-MON-YYYY')),
PARTITION q3_1999 VALUES LESS THAN (TO_DATE('1-OCT-1999','DD-MON-YYYY')),
PARTITION q3_1999 VALUES LESS THAN (TO_DATE('1-NOV-1999','DD-MON-YYYY'))
PARTITION year_after VALUES LESS THAN (MAXVALUE)
);
我找不到的是是否有办法在子分区中添加索引。
目前我在 date 列(我想删除)上有一个索引,但在状态分区上没有。
简而言之,有没有办法在子分区上创建索引?
【问题讨论】:
-
听起来您需要在 state 列上建立本地索引。这样,索引的分区和子分区将与表的分区和子分区相对应。
标签: sql oracle indexing database-partitioning