2017-10-16 61 views
-1

我有簡單的表foreign key(對於單列)和nonunique index列中涉及的FK。我在bulk load之前禁用了FK(在批量加載I truncate表之前),然後啓用它。我知道在Oracle中,當您禁用UNIQUEPRIMARY KEY constraint時,關聯的索引將被丟棄。當您啓用UNIQUEPRIMARY KEY約束時,將創建關聯的索引。但是關於禁用/啓用FK呢?我應該在批量加載之前手動爲FK丟棄nonunique index,並且之後還要手動創建nonunique index?或者我可以保留該指數(我的意思是如果我保留他,這個指數是否有效)?重新創建批量加載的非唯一索引

回答

1

您需要先禁用INDEX

ALTER INDEX idx_fk_column UNUSABLE; 

那麼你的DML操作後重新建立它。

ALTER INDEX idx_fk_column REBUILD; 
+0

謝謝。不錯的選擇。我認爲這比重新創建索引要好。 – ArtSol

1

如果您保留索引,它仍然有效。但是這可能是負載過程中的開銷。因此,一些網站希望禁用(使用無法使用),並重新啓用(使用REBUILD)這樣的非唯一索引(注:如果是唯一索引,設置UNUSABLE將阻止插入,所以你必須實際刪除並創建)。