表分区和索引的问题,请高手看看
t表结构为
(c1_idx  number,
 c2      varchar2(50),
 c3_part date
)
我的表分区是按c3_part的月份分的,每个分区有300万条数据,
索引建在字段c1_idx上,现在每过一个月就要导入新的一个月的数据。
也就是以前这个子分区上是没数据的,每导一次,就增加一个有数据的子分区。我的理解是:
每次导入时,把在字段c1_idx上的索引drop掉,然后再导,导完后再建索引。你觉得我的理解正确吗?有必要这样吗?

解决方案 »

  1.   

    不需要每次导入时都drop掉索引的,导入完毕以后,再建索引也会开销大量时间的
      

  2.   

    如果经常删除分区或者更新数据,建议使用LOCAL索引,这样删除分区不会影响其它分区上的索引
      

  3.   


    把索引drop 掉在导入数据会提高导入的速度, 对大表的操作时一般也建议这么做。 300w的数据,重建一下索引也花不了多长时间。 不知道楼主现在建的什么索引?在分区表中,对于local索引,每一个表分区对应一个索引分区,当表的分区发生变化时,索引的维护由Oracle自动进行。对于global索引,可以选择是否分区,而且索引的分区可以不与表分区相对应。当对分区进行维护操作时,通常会导致全局索引的INVALDED,必须在执行完操作后 REBUILD。
    Oracle 分区表
    http://blog.csdn.net/tianlesoftware/archive/2009/10/24/4717318.aspx------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    Q Q 群:62697716
      

  4.   


    可以这样操作。 导入的时候,重做index,或者是物理上分开表。而不是用分区表
      

  5.   

    我的意思 是用分区表,只是分区的列和索引列不同,
    每个月导入一个子分区,在导之前先drop index,导完后再重 建索引。
    请仔细看看我的帖子吧,谢了!
      

  6.   

    是不是逗号和句号搞错了,
    应为:可以这样操作。 导入的时候,重做index。或者是物理上分开表,而不是用分区表?
      

  7.   

    本帖最后由 inthirties 于 2010-02-23 08:56:23 编辑