Maison > base de données > tutoriel mysql > Filtrage de clause JOIN ou WHERE : quelle approche SQL offre de meilleures performances ?

Filtrage de clause JOIN ou WHERE : quelle approche SQL offre de meilleures performances ?

Linda Hamilton
Libérer: 2025-01-03 07:10:39
original
183 Les gens l'ont consulté

JOIN vs. WHERE Clause Filtering: Which SQL Approach Offers Better Performance?

Performances du filtre : critères de jointure par rapport à la clause WHERE

Lors de l'exécution de requêtes SQL, il est courant de filtrer les données en utilisant à la fois les critères de jointure et le Clause OÙ. Cependant, la question se pose : quelle approche offre de meilleures performances ?

Considérez les deux requêtes suivantes :

Requête 1 (Filtre à la jointure)

SELECT  *
FROM    TableA a
INNER JOIN  TableXRef x
ON      a.ID = x.TableAID
INNER JOIN  TableB b
ON      x.TableBID = b.ID
WHERE   a.ID = 1
Copier après la connexion

Requête 2 (Filtre sur OÙ)

SELECT  *
FROM    TableA a
INNER JOIN  TableXRef x
ON      a.ID = x.TableAID
AND     a.ID = 1
INNER JOIN  TableB b
ON      x.TableBID = b.ID
Copier après la connexion

Intuitivement, beaucoup supposent que le filtrage sur les critères de jointure (requête 1) est plus rapide car il réduit le résultat défini plus tôt. Cependant, les tests empiriques révèlent un résultat surprenant.

Résultats de performances

Après avoir exécuté des tests avec un ensemble de données de 1 000 enregistrements dans chaque table, les résultats ont montré que la requête 2 (filtrage sur la clause WHERE) était en fait légèrement plus rapide :

Filter Technique Elapsed Time (ms)
Join Criteria (Query 1) 143256
WHERE Clause (Query 2) 143016

Logique Considérations

Bien que les performances soient proches entre les deux approches, il existe des arguments logiques en faveur de l'utilisation de la clause WHERE pour le filtrage :

  • Si vous avez remplacé les INNER JOIN par LEFT JOINs, le filtre sur les critères de jointure n'aurait plus de sens logiquement.
  • L'utilisation de la clause WHERE garantit que le filtre s'applique à toutes les lignes de l'ensemble de résultats, quel que soit le type de jointure utilisé.

Conclusion

Bien que les deux techniques de filtrage fonctionnent de manière similaire, l'application du filtre dans le La clause WHERE est légèrement plus rapide et plus logiquement cohérente. Cette technique offre les mêmes performances et garantit la clarté de la requête.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal