现有一分区表 ,以 month_id 字段划分分区,如果在这张表上再建立一个 month_id 的全局索引请问这个索引是否有意义 ?

解决方案 »

  1.   

    local的应该不行, local index不但要求分区形式与表的分区完全相同,而且依赖列,存储属性也需要完全相同。不过对于本地索引,索引分区的维护是自动进行的,你在做drop/add/split的时候,是不需要去自己维护index的, 与之相对的是global index,他与父表的Partition信息完全不相干,不过当表是分区表的时候,对分区做了add/drop/split等操作的话,需要自己去rebuild index,否则会有index无效的错误出现,也可以通过alter table tname drop partition ptname update global indexes;这样的方式来更新index。 
    ================================================================== 
    Inthirties关注Oracle数据库 维护 优化,安全,备份,恢复,迁移,故障处理 如果你需要帮助或想和我一起学习的请联系 
    联系方式QQ:370140387 
    电子邮件:[email protected] 
    网站: http://www.inthirties.com
      

  2.   

    global index在性能上通常来说是高于local的.但是global在你ddl时,需要rebuild
    高用性与性能在这里需要你自己来衡量了.
      

  3.   

    有意义。但local index会更好一些。事实上,如果两者都存在,而且系统可以判断数据在那个分区表的话(比如where条件用到了分区字段,或者在sql语句中直接指定了分区),则将会使用local index,其他的情况将会使用global index。