0
点赞
收藏
分享

微信扫一扫

分区索引和全局索引

分区索引和全局索引

分区索引和全局索引_键值

1.问题背景:

因业务需要,对分区表定时进行操作,包括但不限于新增删除分区,大量修改数据,相对应的分区表的索引也会受到影响,所以今天对分区索引和全局索引进行讨论记录。

2.存在问题:

若对分区表分区进行ddl操作,如进行删除分区,将会影响全局索引,使全局索引发生失效情况。而如果存在跨分区查询的情况,需要对各个分区进行事务一致性的维护,则必须要在分区ddl操作后,进行全局索引的重建,以保证全局索引的有效性。而本地索引则不会受到影响。

3.定义分析:

全局索引的创建,需要和分区表的分区键值相同并显式指定maxvalue值



create index &索引名称 on &分区表(&分区键值)

global partition by range (&分区键值)

(partition &分区1 values less than (TO_DATE('01-04-2022','DD-MM-YYYY')),

partition &分区2 values less than (TO_DATE('01-07-2022','DD-MM-YYYY')),

partition &分区3 values less than (TO_DATE('01-10-2022','DD-MM-YYYY')),

partition &分区4 values less than (maxvalue)    
)

;


否则会出现错误


RROR at line 3:

ORA-14038: GLOBAL partitioned index must be prefixed


而在表分区进行分区的添加操作时,全局索引则不会自动添加该分区,需要手动将该分区进行添加



select INDEX_NAME, PARTITION_NAME from dba_ind_partitions where index_name=upper('&index_name');


 alter table orders add partition &分区名称 values less than (&分区值);

  
 select INDEX_NAME, PARTITION_NAME from dba_ind_partitions where index_name=upper('&index_name');

 

相对应的本地索引的创建,则可以与分区键值不相同,而且在分区的添加情况下,也会自动在本地索引中添加分区,删除分区时,也会自动删除相应的本地索引,本地索引分区与表分区是一一对应,每个分区都会独立创建索引分区。

 

 

 

select INDEX_NAME, PARTITION_NAME from dba_ind_partitions where index_name=upper('&索引名称');

  
  alter table orders add partition &分区名称 values less than (&分区值);

  

  select INDEX_NAME, PARTITION_NAME from dba_ind_partitions where index_name=upper('&索引名称');

 

 

 

 

 

 

 

 

举报

相关推荐

Phoenix全局索引

0 条评论