Bonjour,
J'ai créé une table Intervention avec une clé primaire intervention_id, puis j'ai créé une table acte ayant sa clé primaire et une clé étrangère intervention_id.
Est-ce que le fait de spécifier que le champ INTERVENTION_ID de la table ACTES est une clé étrangère suffit à indexer ce champ, ou est-ce qu'il faut que je créé un index non unique sur le champ INTEVENTION_ID de la table ACTE.
En effet j'ai eu un doute, sur la base de production, les suppressions de tous les actes d'une intervention partent parfois en time out.
D'un coup je me suis posé la question, puis j'ai posé la question à google, qui m'a répondu
http://www.sql-server-performance.co...nce_audit7.asp
Par ailleurs SQL Pro a écrit dansMany people, when creating primary key/foreign key relationships (which are often used in JOINs) forget that while an index is automatically created on the primary key column(s) when it is established, an index for a foreign key is not automatically created, and must be created manually if there is to be one.
http://sqlpro.developpez.com/cours/s...ge=partie2#L10
.Mais c'était une remarque générale qui ne s'appliquait pas forcément à SQL Server.La plupart du temps lorsque vous créez une contrainte de clef primaire, étrangère ou une contrainte d'unicité, le SGBDR implante automatiquement un index pour assurer la mécanisme de contrainte avec des performances correctes. En effet une contrainte d'unicité est facilité si un tri sur les données de la colonne peut être activé très rapidement.
Je vous demande donc confirmation. Faut-il comme dit dans l'article créé manuellement un index sur les champs en foreign_key?
Merci de votre aide
Soazig
Partager