oracle能一个分区一个分区建索引吗
------解决方案--------------------
--创建分区表和分区索引
创建表:
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;
------解决方案--------------------
支持1楼。。
------解决方案--------------------
对索引进行分区有两种方法:
1) 随表对索引完成相应的分区:这也称为局部分区索引(locally partitioned index)。
每个表分区都有一个索引分区,而且只索引该表分区。一个给定索引分区中的所有条目都指向一个表分区,表分区中的所有行都表示在一个索引分区中。
2)按区间对索引分区:这也称为全局分区索引(globally partitioned index)。
索引按区间分区或者按散列(10g之后)分区,一个索引分区可能指向任何(和所有)表分区。
由于全局索引只按区间或散列分区,如果希望有一个列表或组合分区索引,就必须使用局部索引。而局部索引会使用底层表相同的机制分区。
使用LOCAL关键字创建局部分区索引。
局部分区索引使用和基表相同的分区来保存索引。
如果使用一个局部索引来保证惟一性约束(PRIMARY KEY或者UNIQUE),那么分区键必须包括在约束本身中。
- SQL code
tony@ORA11GR2> create table t (x int, y int, data varchar2(32)) 2 partition by range (x) ( 3 partition part_1 values less than (2) tablespace ts1, 4 partition part_2 values less than (3) tablespace ts2 5 );Table created.tony@ORA11GR2> create index t_idx_local on t (x, y) local;Index created.
------解决方案--------------------
可以,全局前缀索引,不过建立的索引一定要包含分区字段