重新创建批量加载的非唯一索引
问题描述:
我有简单的表foreign key
(对于单列)和nonunique index
列中涉及的FK
。我在bulk load
之前禁用了FK
(在批量加载I truncate
表之前),然后启用它。我知道在Oracle中,当您禁用UNIQUE
或PRIMARY KEY constraint
时,关联的索引将被丢弃。当您启用UNIQUE
或PRIMARY KEY
约束时,将创建关联的索引。但是关于禁用/启用FK
呢?我应该在批量加载之前手动为FK
丢弃nonunique index
,并且之后还要手动创建nonunique index
?或者我可以保留该指数(我的意思是如果我保留他,这个指数是否有效)?重新创建批量加载的非唯一索引
答
您需要先禁用INDEX
ALTER INDEX idx_fk_column UNUSABLE;
那么你的DML操作后重新建立它。
ALTER INDEX idx_fk_column REBUILD;
答
如果您保留索引,它仍然有效。但是这可能是负载过程中的开销。因此,一些网站希望禁用(使用无法使用),并重新启用(使用REBUILD)这样的非唯一索引(注:如果是唯一索引,设置UNUSABLE将阻止插入,所以你必须实际删除并创建)。
谢谢。不错的选择。我认为这比重新创建索引要好。 – ArtSol