Maison > base de données > tutoriel mysql > La clause Where dans MySQL rejoint : ON vs. WHERE – Qu'est-ce qui est le plus efficace ?

La clause Where dans MySQL rejoint : ON vs. WHERE – Qu'est-ce qui est le plus efficace ?

Patricia Arquette
Libérer: 2024-12-09 15:54:12
original
485 Les gens l'ont consulté

Where Clause in MySQL Joins:  ON vs. WHERE – Which is More Efficient?

Optimisation des jointures MySQL avec la clause Where

Dans MySQL, la jointure de deux tables peut être effectuée à l'aide de différents types de jointures. Lorsque vous effectuez une jointure gauche et que vous souhaitez appliquer une condition basée sur une colonne d'une ou des deux tables, le placement de la condition peut avoir un impact sur l'efficacité et les résultats de la requête.

Considérez le scénario suivant :

  • Nous avons deux tables, catégories et user_category_subscriptions, et souhaitons récupérer toutes les catégories et les catégories auxquelles un utilisateur spécifique est abonné.
  • Le La colonnecategory_id est une clé dans les deux tables et user_id est présente dans la table user_category_subscriptions.

La requête suivante permet d'obtenir le résultat souhaité :

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions
ON user_category_subscriptions.category_id = categories.category_id AND user_category_subscriptions.user_id = 1;
Copier après la connexion

Cependant, en utilisant une clause WHERE au lieu d'une clause AND dans la jointure peut conduire à une efficacité réduite :

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions
ON user_category_subscriptions.category_id = categories.category_id
WHERE user_category_subscriptions.user_id = 1;
Copier après la connexion

Dans une jointure externe, le placement de la condition dans la clause join ou la clause WHERE modifie radicalement son comportement. Lorsqu'il est spécifié dans la jointure, seul le sous-ensemble de lignes répondant à la condition est joint, ce qui permet une sélection efficace des lignes. En revanche, l'utilisation d'une clause WHERE filtre les lignes déjà jointes, en écartant celles qui ne remplissent pas la condition.

Par conséquent, pour interroger efficacement toutes les catégories et celles auxquelles un utilisateur particulier est abonné, en plaçant la condition dans la jointure Cette clause est recommandée. Cette approche garantit que seules les lignes pertinentes sont jointes, fournissant ainsi des résultats plus rapides et plus précis.

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