Bonjour,
Je travaille sur une base SqlServer 2008 de 2 Go dont la table principale contient 2 millions de ligne.
Lorsque je fais une requete j'ai des temps exécrable mais en transformant ma requete en sous requete, c'est plutot honorable.
J'imagine bien que sans la base il va être difficile de m'aider mais je tente quand meme. Donc voici ma requete lente (schématisée bien sur)
ca c'est tres lent mais quand je fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SELECT DISTINCT TABLE1.15_champs, TABLE2.6_champs, TABLE3.3_champs TABLE4.1_champ FROM TABLE1 INNER JOIN TABLE_DE_JOINTURE_1 INNER JOIN TABLE_DE_JOINTURE_2 INNER JOIN TABLE_2 INNER JOIN TABLE_3 LEFT JOIN TABLE_DE_JOINTURE_3 LEFT JOIN TABLE_DE_JOINTURE_4 INNER JOIN TABLE_DE_JOINTURE_5 INNER JOIN TABLE_4
c'est beaucoup plus rapide. Est ce que quelqu'un peut m'expliquer le pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 SELECT TABLE1.15_champs, TABLE2.6_champs, TABLE3.3_champs TABLE4.1_champ FROM (select DISTINCT TABLE1.ID FROM TABLE1 INNER JOIN TABLE_DE_JOINTURE_1 INNER JOIN TABLE_DE_JOINTURE_2 INNER JOIN TABLE_2 INNER JOIN TABLE_3 LEFT JOIN TABLE_DE_JOINTURE_3 LEFT JOIN TABLE_DE_JOINTURE_4 INNER JOIN TABLE_DE_JOINTURE_5 INNER JOIN TABLE_4) AS T1 ON T1.ID = TABLE1.ID INNER JOIN TABLE_2 INNER JOIN TABLE_3 INNER JOIN TABLE_4
Si j'avais de l'argent je me paierais bien un audit de Fred Brouard mais en attendant ce jour je dois bien me débrouiller.
merci de votre aide
Partager