Maison > base de données > tutoriel mysql > Jointures par virgule et jointures explicites dans SQL : les jointures par virgule sont-elles un goulot d'étranglement en termes de performances ?

Jointures par virgule et jointures explicites dans SQL : les jointures par virgule sont-elles un goulot d'étranglement en termes de performances ?

Barbara Streisand
Libérer: 2025-01-08 07:51:39
original
214 Les gens l'ont consulté

Comma Joins vs. Explicit JOINs in SQL: Are Comma Joins a Performance Bottleneck?

Jointure par virgule SQL et JOIN explicite : analyse des goulots d'étranglement des performances

Lors de l'écriture de requêtes de base de données, il est facile d'ignorer le mot-clé explicite JOIN et d'utiliser la syntaxe plus familière séparée par des virgules :

<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>
Copier après la connexion

Au fur et à mesure que vous approfondissez les bases de SQL, vous rencontrerez peut-être une syntaxe JOIN explicite et vous demanderez si les requêtes séparées par des virgules que vous utilisiez précédemment ont causé des problèmes.

Risque de concaténation de virgules

Bien que la syntaxe de jointure par virgule soit fonctionnellement équivalente à INNER JOIN, dans certains cas courants, elle peut entraîner des problèmes de performances imprévus. Prenons l'exemple suivant :

<code class="language-sql">SELECT * FROM people p, companies c 
    WHERE p.companyID = c.id AND p.firstName = 'Daniel'</code>
Copier après la connexion

Dans cette requête, la base de données calculera le produit cartésien des tables personnes et entreprises avant d'appliquer le filtre. Ce produit cartésien sans contrainte n'existe qu'en mémoire et est de courte durée, mais son calcul peut prendre beaucoup de temps.

Meilleure approche : JOIN explicite

Une approche plus efficace consiste à utiliser le mot-clé JOIN pour regrouper les contraintes avec un JOIN :

<code class="language-sql">SELECT * FROM people p JOIN companies c ON p.companyID = c.id
    WHERE p.firstName = 'Daniel'</code>
Copier après la connexion

Cette approche permet à la base de données de calculer directement des JOIN entièrement contraintes, évitant ainsi les calculs de produits cartésiens inutiles.

Résumé

Bien qu'il n'y ait rien de mal en soi avec les jointures par virgules, il est généralement recommandé d'utiliser une syntaxe JOIN explicite. Non seulement cela rend le code plus facile à lire et à maintenir, mais cela peut également améliorer les performances dans certains cas. En utilisant le mot-clé JOIN, vous pouvez optimiser vos requêtes SQL et garantir qu'elles s'exécutent aussi efficacement que possible.

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