|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour,
Je suis en train de récupérer un programme en cours et la personne qui a travaillé dessus a créé des vues avec des left outer join partout (de peur sans doute de "rater" des données). Et, dans la plupart des cas des inner join auraient été plus pertinents. Y a-t-il de grosses différences de performances entre un left outer join qui ne ramène qu'une ligne et un inner join ? Merci |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Bonjour Jérome,
Il y a en effet des différences importantes entre un OUTER JOIN et un INNER JOIN. Un OUTER JOIN va devoir scanner la totalité d'une des 2 tables (en fonction de si c'est LEFT ou RIGHT) car c'est fondamentalement ce qu'on lui demande. Pour s'en rendre compte, il suffit d'afficher le plan d'éxecution de la requête et de voir que l'on a un SCAN (index scan ou table scan) au lieu d'un SEEK. Bien évidemment, l'utilisation pertinente d'index peut rendre un OUTER JOIN aussi performant qu'un INNER JOIN. Je vous invite à bien regarder les plans d'exécution pour identifier les jointures externes couteuses. Et j'ajouterai que l'on utilise des jointures externes parce que l'on en a besoin, pas juste au cas où... -- Jean-Pierre Riehl http://blog.djeepy1.net "jerome" <jerome@hh.fr> wrote in message news:eEcfXJczHHA.1100@TK2MSFTNGP06.phx.gbl... > Bonjour, > > Je suis en train de récupérer un programme en cours et la personne qui a > travaillé dessus a créé des vues avec des left outer join partout (de peur > sans doute de "rater" des données). > Et, dans la plupart des cas des inner join auraient été plus pertinents. > > Y a-t-il de grosses différences de performances entre un left outer join > qui > ne ramène qu'une ligne et un inner join ? > > Merci > > |
|
![]() |
| Outils de la discussion | |
|
|