Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

jointures internes et jointures externes

1 réponse
Avatar
jerome
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

1 réponse

Avatar
Jean-Pierre Riehl
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" wrote in message
news:
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