Bonsoir,

J'ai un peu de mal à comprendre le fonctionnement d'une requête JOIN.

Dans les exemples ci-dessous:

SELECT articles.* FROM articles 
JOIN users
ON users.username = 'Joe'
WHERE articles.owner_id = users.id;
SELECT articles.* FROM articles
JOIN users
ON article.owner_id = users.id
WHERE users.username = 'Joe';

Les résultats sont les mêmes mais existe-t-il une différence dans le déroulement d'exécution de la requête ?

Et d'une manière générale comment est traitée la requête (toujours dans le premier exemple) ?

Je sélectionne tous les articles puis l'utilisateur et j'applique la clause where.

Ou alors, je sélectionne l'utilisateur puis les articles avec la clause where.

Merci d'avance.

3 réponses


bugland
Réponse acceptée

Pour bien faire tous ce qui fait parti d'une jointure est à mettre dans le FROM et tout ce qui est lié au filtre dans le WHERE.
En théorie en faisant cela cela optimise le temps d'éxécution et la gestion des index (après tout dépend quel moteur de base de données il y a derrière).

Indra
Auteur

Merci pour ta réponse, donc le deuxième exemple serait celui à conseiller ?

Oui tout à fait.