Programmation » [SQL] LEFT JOIN Partiel
Catégorie:  
   
[SQL] LEFT JOIN Partiel
Publié le 16/06/2008 @ 16:21:38,
Par 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? :ohwell: :roll:
Et au besoin s'arrêter.
   
[SQL] LEFT JOIN Partiel
Publié le 16/06/2008 @ 16:22:54,
Par 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...)
Et au besoin s'arrêter.
   
[SQL] LEFT JOIN Partiel
Publié le 16/06/2008 @ 20:01:14,
Par 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?
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 kortenberg
j'incrémente à la proposition de Rfr.
sinon select imbriqués
   
[SQL] LEFT JOIN Partiel
Publié le 16/06/2008 @ 21:10:09,
Par 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


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 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?
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 mysql
Citation 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 blietaer
oui 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
faux avec mysql


Je pensais qu'on parlait de DBMS... :ohwell:
Concept vivant.
Répondre - Catégorie:  
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?