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
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
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 :
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!