2017-10-16 7 views
-1

J'ai le tableau simple avec foreign key (pour la colonne simple) et nonunique index pour la colonne impliquée dans FK. Je désactive FK avant bulk load (avant le tableau de charge en bloc I truncate), et l'activer après. Je sais que dans Oracle lorsque vous désactivez un UNIQUE ou PRIMARY KEY constraint un index associé est supprimé. Et lorsque vous activez une contrainte UNIQUE ou PRIMARY KEY, un index associé est créé. Mais qu'en est-il de désactiver/activer FK? Devrais-je laisser tomber manuellement nonunique index pour FK avant le chargement en bloc et également créer manuellement nonunique index après? Ou je peux garder cet index (je veux dire, cet index serait-il valide si je le gardais)?Recréer l'index non unique pour la charge en vrac

Répondre

1

Vous devez d'abord désactiver le INDEX

ALTER INDEX idx_fk_column UNUSABLE; 

puis après vos opérations DML re-construire.

ALTER INDEX idx_fk_column REBUILD; 
+0

Merci. Belles options. Je pense que c'est mieux que de recréer l'index. – ArtSol

1

Si vous conservez l'index, il est toujours valide. Mais il peut s'agir d'un surcoût pendant le chargement. Ainsi, certains sites préfèrent désactiver (en utilisant UNUSABLE) et réactiver (en utilisant REBUILD) des index non-uniques (Note: S'il s'agit d'un index Unique, le réglage UNUSABLE empêcherait les INSERT, donc vous devrez réellement DROP et CREATE).