【问题标题】:Recreate nonunique index for bulk load为批量加载创建非唯一索引
【发布时间】:2017-10-16 16:31:34
【问题描述】:

我有一个简单的表,其中foreign key(用于单列)和nonunique index 用于FK 中涉及的列。我在bulk load 之前禁用FK(在批量加载我truncate 表之前),然后启用它。我知道在 Oracle 中,当您禁用 UNIQUEPRIMARY KEY constraint 时,关联的索引会被删除。当您启用UNIQUEPRIMARY KEY 约束时,将创建一个关联索引。但是禁用/启用FK 呢?我应该在批量加载之前手动删除nonunique indexFK 并在之后手动创建nonunique index 吗?或者我可以保留那个索引(我的意思是如果我保留他这个索引是否有效)?

【问题讨论】:

    标签: oracle indexing constraints


    【解决方案1】:

    您需要先禁用INDEX

    ALTER INDEX idx_fk_column UNUSABLE;
    

    然后在您的 DML 操作之后重新构建它。

    ALTER INDEX idx_fk_column REBUILD;
    

    【讨论】:

    • 谢谢。不错的选择。我认为这比重新创建索引要好。
    【解决方案2】:

    如果您保留索引,它仍然有效。但这可能是加载期间的开销。因此,一些站点更喜欢禁用(使用 UNUSABLE)并重新启用(使用 REBUILD)此类非唯一索引(注意:如果它是唯一索引,设置 UNUSABLE 会阻止 INSERT,因此您必须实际 DROP 和 CREATE)。

    【讨论】:

      猜你喜欢
      • 2010-12-07
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多