Maison >base de données >tutoriel mysql >La clause Where dans MySQL rejoint : ON vs. WHERE – Qu'est-ce qui est le plus efficace ?
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 :
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;
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;
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!