分区索引就是在所有每个区上单独创建索引,它能自动维护,在drop或truncate某个分区时不影响该索引的其他分区索引的使用,也就是索引不会失效,维护起来比较方便,但是在查询性能稍微有点影响。
建立分区索引:
create index idx_ta_c2 on ta(c2) local (partition p1,partition p2,partition p3,partition p4);
或者 create index idx_ta_c2 on ta(c2) local ;
另外在create unique index idx_ta_c2 on ta(c2) local ;系统会报ORA-14039错误,这是因为ta表的分区列是c1,不支持在分区表上创建PK主键或主键列不包含分区列,创建唯一约束也不可以这样。
分区索引只支持分区内的唯一性,无法支持表上的唯一性,因此如果要用局部索引去给表做唯一性约束,则约束中必须要包括分区键列
ALTER TABLE TEST ADD CONSTRAINT PK_TEST PRIMARY KEY (SEQ_ID,PARTITION_ID) USING INDEX LOCAL;
全局索引就是在全表上创建索引,它可以创建自己的分区,可以和分区表的分区不一样,也就是它是独立的索引。
建立全局索引:
create index idx_ta_c3 on ta(c3) global;
在drop或truncate某个分区时需要创建索引alter index idx_xx rebuild,也可以通过alter table table_name drop partition partition_name update global indexes;实现