Comparaison de l'efficacité des jointures par virgules et des mots-clés JOIN explicites en SQL
Les premières requêtes SQL, lorsque les développeurs n'étaient pas familiers avec le mot-clé JOIN, utilisaient souvent le format suivant :
<code class="language-sql">SELECT a.someRow, b.someRow FROM tableA AS a, tableB AS b WHERE a.ID = b.ID AND b.ID = $someVar</code>
Alors que les développeurs commencent à utiliser INNER JOIN
, une question se pose : ces anciennes requêtes doivent-elles être réécrites ?
Impact sur les performances
Bien que cette requête soit syntaxiquement valide, elle peut avoir un impact sur les performances dans certains cas. Considérez la requête suivante :
<code class="language-sql">SELECT * FROM people p, companies c WHERE p.companyID = c.id AND p.firstName = 'Daniel'</code>
De nombreuses bases de données calculent d'abord le produit cartésien de toutes les lignes des deux tables avant le filtrage. Pour de grands ensembles de données, cela serait très inefficace.
Bonnes pratiques
Pour éviter ces problèmes de performances, il est recommandé d'utiliser explicitement le mot-clé JOIN. La requête réécrite suivante organise les contraintes plus efficacement :
<code class="language-sql">SELECT * FROM people p JOIN companies c ON p.companyID = c.id WHERE p.firstName = 'Daniel'</code>
Cette méthode demande directement à la base de données d'effectuer des opérations de jointure au lieu de calculer un produit cartésien complet, augmentant ainsi la vitesse et réduisant l'empreinte mémoire.
Résumé
Bien que les anciennes requêtes utilisant la syntaxe "virgule join" fonctionnent correctement, il est recommandé de les mettre à jour pour utiliser le mot-clé JOIN. Cela améliore non seulement la lisibilité, mais résout également les problèmes de performances potentiels.
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!