web-dev-qa-db-fra.com

Comment indexer un résultat de jointure de deux tables ou plus afin d'améliorer les performances de SQL Server?

Je suis nouveau à indexer et à suivre les bases de l'indexation. Je peux trouver un index clustered par défaut pour la principale contrainte de clé dans la partie index de la table correspondante, mais après avoir créé une contrainte de clé étrangère, je ne trouve aucun.

Maintenant, j'ai une exigence dans laquelle l'indexation devrait être mise en œuvre pour améliorer les performances. J'ai lu sur indexation de la clé étrangère afin d'améliorer les performances d'un Résultat de joint.

Dois-je ajouter la colonne de la clé étrangère à un index supplémentaire non en cluster ou la clé étrangère a une indexation par défaut?

Comment puis-je implémenter efficacement l'indexation si ma SQL Table Structure est la suivante et j'ai une Rejoindre la requête avec où la clause Utilisation t1_col

               table1                       table2
               ------                       ------
               t1_col1(pk)                  t2_col1(pk)
               t1_col2                      t2_col2
               t1_col3                      t2_col3
               t1_col4                      t2_col4
               t2_col1(FK)
9
Harun

Une clé étrangère n'a pas d'index par défaut. Vous devez en créer un.

Dans ce cas, je leur suggérerais l'un ou l'autre. Cela dépend de la sélectivité relative des 2 colonnes

CREATE INDEX IX_table2fk ON
              table1 (t2_col1, t1_col3)
              INCLUDE (any columns needed for the query)

OR

CREATE INDEX IX_table2fk ON
              table1 (t1_col3, t2_col1)
              INCLUDE (any columns needed for the query)

L'inclusion fabriquera le Index couvrant pour éviter les recherches de clé/signet

13
gbn