Programmation » [SQL] LEFT JOIN Partiel
[SQL] LEFT JOIN Partiel
Publié le 16/06/2008 @ 16:21:38,
Par blietaerma 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?
Et au besoin s'arrêter.
[SQL] LEFT JOIN Partiel
Publié le 16/06/2008 @ 16:22:54,
Par blietaeren 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...)
Et au besoin s'arrêter.
[SQL] LEFT JOIN Partiel
Publié le 16/06/2008 @ 20:01:14,
Par rfrEt si tu crées des vues sur les tables qui ne contiendraient que les données pertinentes, ça n'aiderait pas le moteur SQL?
To die is a time consuming activity, it often takes a lifetime (but some are faster than others ... though)
[SQL] LEFT JOIN Partiel
Publié le 16/06/2008 @ 20:50:04,
Par kortenbergj'incrémente à la proposition de Rfr.
sinon select imbriqués
sinon select imbriqués
[SQL] LEFT JOIN Partiel
Publié le 16/06/2008 @ 21:10:09,
Par gizmoEt 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.
Concept vivant.
[SQL] LEFT JOIN Partiel
Publié le 17/06/2008 @ 08:38:36,
Par blietaerIl 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?
Et au besoin s'arrêter.
[SQL] LEFT JOIN Partiel
Publié le 17/06/2008 @ 09:08:46,
Par 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.
[SQL] LEFT JOIN Partiel
Publié le 17/06/2008 @ 10:22:01,
Par blietaeroui mais je suis sous posgress...
Et au besoin s'arrêter.
[SQL] LEFT JOIN Partiel
Publié le 17/06/2008 @ 13:51:58,
Par gizmo