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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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, ...
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
Partager