Maison >base de données >tutoriel mysql >Pourquoi les mots-clés JOIN sont-ils préférés aux jointures par virgule dans SQL ?
Pourquoi éviter les jointures par virgules dans SQL ?
Les nouveaux développeurs SQL utilisent souvent des jointures par virgules, une manière moins explicite de joindre des tables :
<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>
Bien que fonctionnelle (équivalente à un INNER JOIN
), cette méthode présente des inconvénients potentiels en termes de performances.
L'inefficacité des jointures par virgules
Considérez cet exemple :
<code class="language-sql">SELECT * FROM people p, companies c WHERE p.companyID = c.id AND p.firstName = 'Daniel'</code>
La base de données peut initialement créer un produit cartésien complet (chaque combinaison de lignes people
et companies
), puis filtrer en fonction de la clause WHERE
. C'est nettement moins efficace que les méthodes alternatives.
La supériorité des jointures basées sur des mots clés
L'utilisation de mots-clés JOIN
explicites et de la clause ON
offre une approche plus efficace et plus lisible :
<code class="language-sql">SELECT * FROM people p JOIN companies c ON p.companyID = c.id WHERE p.firstName = 'Daniel'</code>
Cela indique clairement la condition de jointure à la base de données, optimisant le processus de jointure et évitant la création inutile d'un grand produit cartésien intermédiaire. Cela conduit à une exécution plus rapide des requêtes et à une consommation réduite de ressources, en particulier avec de grands ensembles de données.
Meilleure pratique : utilisez toujours les mots-clés JOIN
Pour de meilleures performances, lisibilité et maintenabilité, préférez toujours les mots-clés JOIN
(INNER JOIN
, LEFT JOIN
, RIGHT JOIN
, etc.) aux jointures par virgules. Même si les jointures par virgules existantes n'ont peut-être pas besoin d'être réécrites immédiatement, l'adoption de cette bonne pratique améliore constamment votre code SQL.
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!