OVH Cloud OVH Cloud

optimisation sql

4 réponses
Avatar
jlrous
Bonjour,

Excusez moi si le propos de ce mail est hors sujet pour=20
ce forum.

J'ai trois tables
T1(T1A, T1B, T1C)
T2(#T1A, #T3A, T2C)
T3(T3A, T3B, T3C)

T1A cl=E9 primaire de T1
T3A cl=E9 primaire de T3
#T1A,#T3A cl=E9 primaire de T2

Les trois tables poss=E8dent quelques millions=20
d'enregistrements.

Je veux r=E9unir les trois tables selon deux crit=E8res sur=20
les tables T1 et T3.

Solution 1
Select
T1B
From
T1, T2, T3
Where=20
T1C=3D 'toto' And
T3C=3D'titi' And
T1.T1A=3DT2.T1A and
T3.T3A=3DT2.T3A ;

Solution 2
Select
T1B
From
T1, T2, T3
Where=20
T1.T1A=3DT2.T1A and
T3.T3A=3DT2.T3A and
T1C=3D 'toto' And
T3C=3D'titi' ;

La solution 1 est elle plus rapide que la deux en temps=20
machine.
Est-il vrai de dire qu'il est plus rapide d'effectuer les=20
filtres sur T1C et T3C et de r=E9aliser les jointures apr=E8s=20
(solution 1).

Existe-t-il un site permettant de donner l'essentiel de=20
l'optimisation ?

Merci pour les r=E9ponses.



Merci pour les r=E9ponses

4 réponses

Avatar
lionelp
Bonjour,

L'optimiseur se débrouille, l'ordre des prédicats n'a pas
d'importance.
L'aide en ligne est un bon début pour trouver des infos
sur l'optimiseur et ce qu'il est capable de faire. Ensuite
il y a msdn.microsoft.com qui en contient un peu plus et
est régulièrement mis à jour.

Cordialement,
LionelP

-----Message d'origine-----
Bonjour,

Excusez moi si le propos de ce mail est hors sujet pour
ce forum.

J'ai trois tables
T1(T1A, T1B, T1C)
T2(#T1A, #T3A, T2C)
T3(T3A, T3B, T3C)

T1A clé primaire de T1
T3A clé primaire de T3
#T1A,#T3A clé primaire de T2

Les trois tables possèdent quelques millions
d'enregistrements.

Je veux réunir les trois tables selon deux critères sur
les tables T1 et T3.

Solution 1
Select
T1B
From
T1, T2, T3
Where
T1C= 'toto' And
T3C='titi' And
T1.T1A=T2.T1A and
T3.T3A=T2.T3A ;

Solution 2
Select
T1B
From
T1, T2, T3
Where
T1.T1A=T2.T1A and
T3.T3A=T2.T3A and
T1C= 'toto' And
T3C='titi' ;

La solution 1 est elle plus rapide que la deux en temps
machine.
Est-il vrai de dire qu'il est plus rapide d'effectuer les
filtres sur T1C et T3C et de réaliser les jointures après
(solution 1).

Existe-t-il un site permettant de donner l'essentiel de
l'optimisation ?

Merci pour les réponses.



Merci pour les réponses

.



Avatar
Coeurgan
Je pense que tes deux requètes vont prendre le même temps, sql server a un
mécanisme qui va se charger de les remettre dans l'ordre le plus rapide.

Ce que tu peux faire par contre qui donne souvent des bons résultats (ce
n'est pas automatique bien sur, et je me demande si ca ne correspond pas à
ce que fait l'optimiseur intégré) c'est de modifier ta syntaxe de manière à
insérer tes conditions dans les conditions de jointures.

ca donnerait ca sur ton exemple :

Select
T1B
From
T1
inner join T2 on T1.T1A=T2.T1A And T1C= 'toto'
inner join T3 on T3.T3A=T2.T3A And T3C='titi'

Selon la sélectivité de tes conditions (toto et titi) tu peux obtenir des
bons résultats, meilleurs je crois que si tu ajoute les conditions de
jointure dans la clause WHERE.

A vérifier, tiens nous au courant...

++


"jlrous" a écrit dans le message de
news:138c601c443fa$da8e2450$
Bonjour,

Excusez moi si le propos de ce mail est hors sujet pour
ce forum.

J'ai trois tables
T1(T1A, T1B, T1C)
T2(#T1A, #T3A, T2C)
T3(T3A, T3B, T3C)

T1A clé primaire de T1
T3A clé primaire de T3
#T1A,#T3A clé primaire de T2

Les trois tables possèdent quelques millions
d'enregistrements.

Je veux réunir les trois tables selon deux critères sur
les tables T1 et T3.

Solution 1
Select
T1B
From
T1, T2, T3
Where
T1C= 'toto' And
T3C='titi' And
T1.T1A=T2.T1A and
T3.T3A=T2.T3A ;

Solution 2
Select
T1B
From
T1, T2, T3
Where
T1.T1A=T2.T1A and
T3.T3A=T2.T3A and
T1C= 'toto' And
T3C='titi' ;

La solution 1 est elle plus rapide que la deux en temps
machine.
Est-il vrai de dire qu'il est plus rapide d'effectuer les
filtres sur T1C et T3C et de réaliser les jointures après
(solution 1).

Existe-t-il un site permettant de donner l'essentiel de
l'optimisation ?

Merci pour les réponses.



Merci pour les réponses
Avatar
Laurent Moreau
http://www.quest.com/whitepapers/tuning_article_1_final.pdf



Laurent.






"jlrous" wrote in message
news:138c601c443fa$da8e2450$
Bonjour,

Excusez moi si le propos de ce mail est hors sujet pour
ce forum.

J'ai trois tables
T1(T1A, T1B, T1C)
T2(#T1A, #T3A, T2C)
T3(T3A, T3B, T3C)

T1A clé primaire de T1
T3A clé primaire de T3
#T1A,#T3A clé primaire de T2

Les trois tables possèdent quelques millions
d'enregistrements.

Je veux réunir les trois tables selon deux critères sur
les tables T1 et T3.

Solution 1
Select
T1B
From
T1, T2, T3
Where
T1C= 'toto' And
T3C='titi' And
T1.T1A=T2.T1A and
T3.T3A=T2.T3A ;

Solution 2
Select
T1B
From
T1, T2, T3
Where
T1.T1A=T2.T1A and
T3.T3A=T2.T3A and
T1C= 'toto' And
T3C='titi' ;

La solution 1 est elle plus rapide que la deux en temps
machine.
Est-il vrai de dire qu'il est plus rapide d'effectuer les
filtres sur T1C et T3C et de réaliser les jointures après
(solution 1).

Existe-t-il un site permettant de donner l'essentiel de
l'optimisation ?

Merci pour les réponses.



Merci pour les réponses
Avatar
Fred BROUARD
1) essayer ceci :

Select T1B
From T1
INNER JOIN T2
ON T1.T1A=T2.T1A
INNER JOIN T3
ON T3.T3A=T2.T3A
Where T1C= 'toto'
AND T3C='titi'


2) lire ceci
http://sqlpro.developpez.com/OptimSQL/SQL_optim.html

A +

jlrous a écrit:
Bonjour,

Excusez moi si le propos de ce mail est hors sujet pour
ce forum.

J'ai trois tables
T1(T1A, T1B, T1C)
T2(#T1A, #T3A, T2C)
T3(T3A, T3B, T3C)

T1A clé primaire de T1
T3A clé primaire de T3
#T1A,#T3A clé primaire de T2

Les trois tables possèdent quelques millions
d'enregistrements.

Je veux réunir les trois tables selon deux critères sur
les tables T1 et T3.

Solution 1
Select
T1B
From
T1, T2, T3
Where
T1C= 'toto' And
T3C='titi' And
T1.T1A=T2.T1A and
T3.T3A=T2.T3A ;

Solution 2
Select
T1B
From
T1, T2, T3
Where
T1.T1A=T2.T1A and
T3.T3A=T2.T3A and
T1C= 'toto' And
T3C='titi' ;

La solution 1 est elle plus rapide que la deux en temps
machine.
Est-il vrai de dire qu'il est plus rapide d'effectuer les
filtres sur T1C et T3C et de réaliser les jointures après
(solution 1).

Existe-t-il un site permettant de donner l'essentiel de
l'optimisation ?

Merci pour les réponses.



Merci pour les réponses




--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************