Maison >base de données >tutoriel mysql >Les clés étrangères accélèrent-elles les requêtes ?

Les clés étrangères accélèrent-elles les requêtes ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-05 19:44:40313parcourir

Do Foreign Keys Speed Up Queries?

Clés étrangères et performances des requêtes

Bien que les clés étrangères jouent un rôle crucial dans le respect de l'intégrité référentielle, leur impact sur les performances des requêtes est souvent mal compris. Contrairement à la croyance populaire, les clés étrangères elles-mêmes n'améliorent pas de manière significative les performances des requêtes.

Dans le scénario fourni, une requête joint deux tables, Products et ProductCategories, en utilisant le champ CategoryId comme condition de jointure. Malgré la relation de clé étrangère, le plan de requête affiche une analyse d'index de cluster sur la table Products. En effet, SQL Server ne crée pas automatiquement d'index basés sur des clés étrangères.

Pour améliorer les performances de cette requête, un index doit être créé explicitement sur le champ Products.CategoryId. Après avoir créé l'index, le plan d'exécution affiche les recherches d'index sur les deux tables, réduisant considérablement le coût estimé du sous-arbre.

Par conséquent, les réponses aux questions posées sont les suivantes :

  • La clé étrangère améliore-t-elle les performances des requêtes ?

    • Non. Les clés étrangères sont principalement destinées à l'intégrité des données, et non à l'optimisation des performances.
  • Dois-je créer un index sur toutes les colonnes FK de toutes les tables ?

    • Oui. Pour améliorer les performances des requêtes sur les champs de clé étrangère, les index doivent être créés explicitement sur ces colonnes. Cela permet des recherches plus rapides et réduit la probabilité d'analyses de tables complètes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn