0
votes

Joindre interne à condition ou en utilisant où?

J'ai cette requête

Using where;


1 commentaires

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 pour des conditions entre les deux tables, avec filtrage dans le où la clause .


4 Réponses :


0
votes

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:

SQL Join: Où clause vs. sur la clause


0 commentaires

0
votes

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.


0 commentaires

2
votes

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.

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.

Une préférence est que les filtres sur une seule table sont plus appropriés pour et sur . .

Avec une jointure extérieure, les deux requêtes ne sont pas identiques et vous devez utiliser celui qui exprime votre intention.


0 commentaires

0
votes

J'aime cette règle:

  • sur ... dit comment les tables sont liées
  • où ... filtres les résultats.

    Ceci devient important avec rejoindre car sur n'agit pas comme un filtre.

    Cela vous montre que l'optimiseur traite les mêmes: xxx


0 commentaires