OVH Cloud OVH Cloud

Optimisation de jointure

2 réponses
Avatar
Nathan NAU
Bonjour

J'ai un question sur les jointures. Si j'ai :

SELECT *
FROM t1
INNER JOIN t2
ON t1.idT1 = t2.idT2
WHERE t1.actif = 1

SqlServer a t'il le bon sens de reduir t1 avec la clause WHERE avant la
jointure ou vaut il mieux ecrire :

SELECT *
FROM (SELECT * FROM t1 WHERE t1.actif = 1) t1
INNER JOIN t2
ON t1.idT1 = t2.idT2

Nathan

2 réponses

Avatar
Rudi Bruchez
Nathan NAU a écrit:

SqlServer a t'il le bon sens de reduir t1 avec la clause WHERE avant la
jointure



Salut,

Oui, l'optimiseur de SQL Server a beaucoup de bon sens. Si tu écris du code
propre, il sait très bien quoi faire.
En cas de doute, tu peux regarder le plan d'exécution estimé en
sélectionnant ton SELECT dans Query Analyzer / SSMS, et appuyer sur CTRL+L

--
Rudi Bruchez, MCDBA
http://www.babaluga.com/
Avatar
Philippe T [MS]
Bonjour,

Oui. Par contre attention avec des LEFT ou RIGHT join a explicitement
réduire les enregistrements dans la table lié et non dans la clause WHERE
sinon on n'obtient pas ce que l'on veut.

Phil.
________________________________________________________
Philippe TROTIN
Microsoft Services France http://www.microsoft.com/france
"Nathan NAU" wrote in message
news:%
Bonjour

J'ai un question sur les jointures. Si j'ai :

SELECT *
FROM t1
INNER JOIN t2
ON t1.idT1 = t2.idT2
WHERE t1.actif = 1

SqlServer a t'il le bon sens de reduir t1 avec la clause WHERE avant la
jointure ou vaut il mieux ecrire :

SELECT *
FROM (SELECT * FROM t1 WHERE t1.actif = 1) t1
INNER JOIN t2
ON t1.idT1 = t2.idT2

Nathan