Poster une réponse à un sujet: [SQL] LEFT JOIN Partiel
Attention, ce sujet est un sujet ancien (6035 jours sans réponse)
gizmo
blietaer
oui mais je suis sous posgress...
kortenberg
Il est tout a fait possible de mettre une condition dans la ON clause pour diminuer le nombre de jointure,...
faux avec mysqlCitation de: "http://dev.mysql.com/doc/refman/5.0/fr/left-join-optimization.html"
Toutes les conditions du LEFT JOIN sont transmises à la clause WHERE.blietaer
Il est tout a fait possible de mettre une condition dans la ON clause pour diminuer le nombre de jointure
VOILA !!!!
ce serait tout à fait cela!!!!
.....et comment?
gizmo
Et si tu crées des vues sur les tables qui ne contiendraient que les données pertinentes, ça n'aiderait pas le moteur SQL?
Non. Le query plan sera vraissemblablement le meme vu que la vue ne contiendrait que des jointures statiques, tout comme la jointure.
j'incrémente à la proposition de Rfr.
sinon select imbriqués
sinon select imbriqués
Les select imbriques sont une arme tres dangereuse a double tranchant, ca peut completement te plomber les perfs car la query imbriquee devient bloquante pour la query superieure.
Pour en revenir au probleme. Il est tout a fait possible de mettre une condition dans la ON clause pour diminuer le nombre de jointure, mais attention car si cela est applique sur la mauvaise table, tu te retrouveras avec des lignes en plus.
De toute facon, le query plan est le meilleur outil pour valider la valeur d'une query. Ou bien, le Quest Query Optimizer qui est surpuissant mais payant.
kortenberg
j'incrémente à la proposition de Rfr.
sinon select imbriqués
sinon select imbriqués
rfr
Et si tu crées des vues sur les tables qui ne contiendraient que les données pertinentes, ça n'aiderait pas le moteur SQL?
blietaer
en fait l'intérêt du LEFT JOIN ici est surtout de faire apparaître les lignes de la table A qui ne trouve pas leur petit frère dans la table B (LEFT JOIN print bien les trous aussi, au contraire de RIGHT JOIN...)
blietaer
ma question de la shoutbox était : Peut-on faire un LEFT JOIN sur une partie d'un tableau ?
En fait je fais sans doute de la culpabilité pour le moteur SQL, mais je me dis que si je colle une table à une autre sur base d'une clé primaire et unique, pour des millions de données, je vais le couler.... je voudrais donc réduir ma query pour une "fenêtre" temporelle (1h, 1 journée,..)
Or une quelconque clause WHERE interviendrait seulement _après_ que le JOIN des tables soit effectué....
...non?
En fait je fais sans doute de la culpabilité pour le moteur SQL, mais je me dis que si je colle une table à une autre sur base d'une clé primaire et unique, pour des millions de données, je vais le couler.... je voudrais donc réduir ma query pour une "fenêtre" temporelle (1h, 1 journée,..)
Or une quelconque clause WHERE interviendrait seulement _après_ que le JOIN des tables soit effectué....
...non?