Maison > base de données > tutoriel mysql > Critères JOIN et filtrage de clause WHERE : quelle requête SQL fonctionne le mieux ?

Critères JOIN et filtrage de clause WHERE : quelle requête SQL fonctionne le mieux ?

Patricia Arquette
Libérer: 2025-01-04 22:48:40
original
367 Les gens l'ont consulté

JOIN Criteria vs. WHERE Clause Filtering: Which SQL Query Performs Better?

Quelle requête SQL est la plus rapide : critères de jointure ou filtre de clause Where ?

Question originale :

Quelle approche est la plus efficace : filtrer sur les critères de jointure ou dans le WHERE clause ?

Analyse des performances :

Contrairement à la croyance populaire, les tests ont révélé que le filtre de la clause WHERE est légèrement plus rapide que le filtre des critères de jointure. La différence de performances est cependant insignifiante.

Plans d'exécution des requêtes :

Les deux structures de requête aboutissent à des plans d'exécution identiques, car elles produisent le même ensemble de résultats filtrés.

Cohérence logique :

D'un point de vue logique, il est préférable d'appliquer le filtre à la clause WHERE, car cela a toujours du sens lorsque l'INNER JOIN est remplacé par un LEFT JOIN :

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

Cette requête ne renverra que les enregistrements où a.id vaut 1, quel que soit le type JOIN. Par conséquent, le filtre de clause WHERE est plus logiquement cohérent dans les scénarios où une évaluation paresseuse est requise.

Conclusion :

Bien qu'il y ait un léger avantage en termes de performances à utiliser la clause WHERE filtre, le choix entre les deux approches doit avant tout tenir compte de la cohérence logique et de la lisibilité du code.

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