Pour plus d'informations : Oracle ne crée pas automatiquement un index (comme il le fait pour les contraintes uniques) parce que (a) il n'est pas nécessaire pour appliquer la contrainte, et (b) dans certains cas, vous n'en avez pas besoin.
Le plus Dans la plupart des cas, cependant, vous voudrez créer un index (en fait, dans Oracle Apex, il existe un rapport sur les "clés étrangères non indexées").
Lorsque l'application doit être en mesure de supprimer une ligne dans la table parent, ou de mettre à jour la valeur PK (ce qui est plus rare), le DML souffrira de l'absence d'index, car il devra verrouiller l'ensemble de la table enfant.
Un cas où je choisis habituellement no pour ajouter un index est lorsque le FK est à une table de "données statiques" qui définit le domaine d'une colonne (par exemple, une table de codes d'état), où les mises à jour et les suppressions sur la table parente ne sont jamais faites directement par l'application. Cependant, si l'ajout d'un index sur la colonne apporte des avantages à des requêtes importantes dans l'application, alors l'index sera toujours une bonne idée.