jointures internes et jointures externes

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Pierre Riehl
Le #11853761
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" 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




Publicité
Poster une réponse
Anonyme