oracle的全局索引(global)和本地索引(local)

全局索引和表是否为分区表、分区键值没有直接关系。也就是说,可以在非分区表上建立分区索引,在分区表上建立非分区索引。但是,如果建立分区索引,那么分区键必须和索引键相同。


建立测试表:

create table test(
 id int,
 name varchar2(20)

partition by range(id)
( partition p1 values less than (10),
  partition p2 values less than (20),
  partition p3 values less than (maxvalue)

);

可以在测试表上创建如下索引:

create index ig_test_id on test(id) tablespace test
global partition by range(id)
( partition p1 values less than (5),
  partition p2 values less than (30),
  partition p3 values less than (maxvalue)

);

或者

create index ighash_test_id on test(name) tablespace test
global partition by hash(name)
( partition p1,
  partition p2,
  partition p3

);

但是下面这种是错误的:

create index i_test_id on test(name) tablespace test
global partition by range(id)
( partition p1 values less than (5),
  partition p2 values less than (30),
  partition p3 values less than (maxvalue)

);

本地索引必须建在分区表上。索引键和表的分区键不必相同,但是索引的分区键和表的分区键一定相同。


可以按如下方式创建local索引:

create index ig_test_id on test(id) tablespace test local ;
或者
create index ig_test_id on test(name) tablespace test local ;

你可能感兴趣的:(oracle的全局索引(global)和本地索引(local))