日期:2014-05-17  浏览次数:20813 次

分区索引是个什么情况,怎么不是建在表上的分区字段上?!
例如,创建表:
create table test(
 c1 int,
 c2 varchar2(16),
 c3 varchar2(64),
 c4 int
 constraint pk_ta_c1 primary key(c1)
)partition by range(c1)(
 partition p1 values less than(10000000),
 partition p2 values less than(20000000),
 partition p3 values less than(30000000),
 partition p4 values less than(maxvalue)
);
建立分区索引:
create index idx_test_c2 on test(c2) local (partition p1,partition p2,partition p3,parition p4);
或者create index idx_test_c2 on test(c2) local;

我想问一下,为什么表上是按c1分区,建立的分区索引却是建立在c2字段上?建立分区索引是为了让历史分区索引不用重建,那这个索引不是建立在分区字段上时还能起作用吗?十分不理解啊!!

------解决方案--------------------
分区字段,
和索引字段
从概念上没有什么关联

索引可以建立在表的任何字段,表可以分为分区表和普通表
------解决方案--------------------
你建立的分区索引(local)当然是跟着每个分区走的

你也可以在分区表上建立全局索引啊(GLOBAL)
------解决方案--------------------
各个分区表可以单独建立索引,也可以建立全局索引,互不影响
------解决方案--------------------
ORACLE分区表、分区索引
------解决方案--------------------
按照哪个字段分区,跟你对哪个字段建立索引,二者之间有什么关系,井水不犯河水的事!