重新创建批量加载的非唯一索引

问题描述:

我有简单的表foreign key(对于单列)和nonunique index列中涉及的FK。我在bulk load之前禁用了FK(在批量加载I truncate表之前),然后启用它。我知道在Oracle中,当您禁用UNIQUEPRIMARY KEY constraint时,关联的索引将被丢弃。当您启用UNIQUEPRIMARY KEY约束时,将创建关联的索引。但是关于禁用/启用FK呢?我应该在批量加载之前手动为FK丢弃nonunique index,并且之后还要手动创建nonunique index?或者我可以保留该指数(我的意思是如果我保留他,这个指数是否有效)?重新创建批量加载的非唯一索引

您需要先禁用INDEX

ALTER INDEX idx_fk_column UNUSABLE; 

那么你的DML操作后重新建立它。

ALTER INDEX idx_fk_column REBUILD; 
+0

谢谢。不错的选择。我认为这比重新创建索引要好。 – ArtSol

如果您保留索引,它仍然有效。但是这可能是负载过程中的开销。因此,一些网站希望禁用(使用无法使用),并重新启用(使用REBUILD)这样的非唯一索引(注:如果是唯一索引,设置UNUSABLE将阻止插入,所以你必须实际删除并创建)。