J'ai cette requête
Using where;
4 Réponses :
Les premiers filtres après avoir rejoint les deux tables; tandis que le second joint en utilisant le filtrage des valeurs comme condition de joindre les deux tables. Vous pouvez vérifier ce fil: p>
Vous pouvez vérifier combien cela prend-il pour faire les deux requêtes, mais de toute façon, vous pouvez écrire la requête dans les deux sens, l'optimiseur essaiera de Optimiser la requête soit si elle est la première requête ou la seconde. P>
SQL n'est pas une langue procédurale. C'est une langue descriptive. Une requête décrit le jeu de résultats que vous souhaitez produire. P>
Avec une jointure intérieure, les deux requêtes de votre question sont identiques - elles produisent le même résultat défini dans toutes les circonstances. Lequel préférer est une préférence stylistique. MySQL devrait traiter les deux de la même manière d'une perspective d'optimisation. P>
Une préférence est que les filtres sur une seule table sont plus appropriés pour Avec une jointure extérieure, les deux requêtes ne sont pas identiques et vous devez utiliser celui qui exprime votre intention. P> où code> et
sur code>. p>.
J'aime cette règle:
sur ... code> dit comment les tables sont liées em> li>
-
où ... code> filtres em> les résultats. Li>
ul> Ceci devient important avec rejoindre code> car sur code> n'agit pas comme un filtre. p> Cela vous montre que l'optimiseur traite les mêmes: p> xxx pré> p>
Les deux sont les mêmes. Lequel utiliser est simplement une question de préférence bien que certaines personnes préfèrent utiliser uniquement la clause
sur code> pour des conditions entre les deux tables, avec filtrage dans le
où la clause code>.