mais à quoi ca sert vu que l’enregistremnet 0 ne sera jamais présent dans la table ?
Y a des moment où ça y sera.
Par exemple, si tu fais un site multi utilisateur, tu devras bien gérer un jour ou l’autre le cas “Aucun utilisateur”, là avec un LEFT JOIN, tu peux récupérer les données qui ont été postées par “Aucun utilisateur”.
je pense que si la requete s’execute plus vite c qu 'en interne mysql gere le left join en creant d’abord un grosse table temporaire en prenant tous les enregistrements des 2 tables … puis applique les filtres du where…
alors qu en gerant la jointure dans le where mysql ne lit pas tous les enregistrement…
bon mais le left join a quand meme un avantage (ou inconveniant) c que si la table B ne recouvre pas completement la table A tu auras quand meme tous les enregistrement de la table A…
dans mon cas, je ne trouve pas ca très interessant (je dois être trop bete pour comprendre l’attrait )
juste au cas où il y aurait qqn qui passerai par là :
je ne sais pas vraiment comment les requetes sont gérées, mais dans un select, l’ordre des conditions a t il une importance ?
dans mon cas, je fais une selection sur ma table principale, et je recupèredes label correspondant au clés étrangères par jointure
alors je me disais que si je selectionne d’abord, puis je fais les jointures sur les résultats restants, ça utiliserai moins de ressources… ?
Logiquement oui.
Evaluer :
WHERE x = 3 AND y > 5 AND id IN((SELECT id FROM table ))
C’est plus rapide que :
WHERE y > 5 AND x = 3 AND id IN((SELECT id FROM table ))
WHERE id IN((SELECT id FROM table )) AND y > 5 AND x = 3
Puisque mySQL va déjà chercher un enregistrement matchant x = 3, puis dans ceux matchant x = 3, il va vérifie si y > 5, et si oui vérifier le IN.