local index在分区表中只能保证当前分区内的唯一性

解决方案 »

  1.   

    创建分区表,经常使用的是local分区索引,因为之所以做分区表就是因为数据量太大了,如果还做global索引的话那么就失去了用分区表的优点,索引维护还是很慢。
      

  2.   

    如果是普通表,创建的索引应该是global索引吧。
      

  3.   

    局部比较好吧。但是注意啊,你建立局部索引+分区表,在写sql语句时候一定
    要使用分区关键字,要不然效率很低,如果没有使用分区关键字,每次查询
    要检索n次(n=分区个数)。注:
    全局索引:create  index idx_t1_tt1 on t(tt1);  (遇分区表时候分区删除、合并、分割增删都会使全局索引失效,这时候要使用语句更新索引alter table t truncate partition part_01 update global indexes)
    局部索引:create index idx_t2_tt1 on t(tt1) local;
      

  4.   

    如果是普通表,创建的索引应该是global索引吧。
    普通表上也可以创建global分区索引的。
    以下是我的一些总结,希望有用。
    首先,我们把分区索引和非分区索引这两个概念分开。把非分区索引当做普通的索引,它可以建在普通表上,也可以建在分区表上,这里没有说明是不是global,加不加global这个关键词,通过dbms_medata.get_ddl查看都是一样的。但如果是分区表,drop partition时,update global indexes对这种索引是有用的,又说明它是global的。
    只有分区索引才分为global或local两种,local分区索引只能建在分区表上,而global分区索引可以建在分区表上,也可以建在普通表上。