optimisation d'une vue avec plusieurs sous-requêtes
Bonjour,
je dois définir une vue sur des tables A et B
La table B doit être utilisée plusieurs fois avec A avec des conditions différentes.
J'utilise donc des sous-requêtes.
Voici un extrait de mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ...
(SELECT SUM(B.heures) FROM B
WHERE B.col1 IN ('2','3') AND B.col2='NE' AND A.ID=B.ID)
AS req_B_1,
(SELECT SUM(B.montant) FROM B
WHERE B.col1 IN ('2','3') AND B.col2='NE' AND AND A.ID=B.ID)
AS req_B_2,
(SELECT SUM(B.heures) FROM B
WHERE B.col1='5' AND STR_TYPE='NE' AND AND A.ID=B.ID)
AS req_B_3,
(SELECT SUM(B.montant) FROM B
WHERE SB.col1='5' AND STR_TYPE='NE' AND AND A.ID=B.ID)
AS req_B_4,
... |
Le problème est que j'ai environ 20 sous-requêtes comme celles ci-dessus, et que cela plombe le temps d'exécution. D'autant plus qu'on ne peut retourner qu'une seule valeur par requête: dans mon exemple, j'utilise 2 sous-requêtes avec les mêmes conditions pour récupérer le nombre d'heures et le montant . De plus B comporte plusieurs millions de lignes.
Y-a-t-il une solution plus performante ? (utiliser une table CTE qui ne comporterait que les lignes A.ID=B.ID ?)
Merci à l'avance de votre aide
Jean