Bonjour,

Je cherche à optimiser la requête suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
UPDATE PLN_IND_DET A 
SET (A.DEMANDE) = ( SELECT SUM(B.ACTUALDEMAND) 
						   FROM FCITEMDATA B 
						   WHERE B.CONFIG='PDP' 
						   AND B.ITEM=A.ITEM 
						   AND B.YEAR=A.YEAR 
						   AND B.PERIOD=A.MONTH
						  ) 
WHERE A.NAME = 'TOT_PDP' 
AND A.DATE = TO_DATE('2011-11-24','YYYY-MM-DD')
Le but est de mettre à jour le champ DEMANDE dans la table PLN_IND_DET avec la somme du champ ACTUALDEMAND dans la table FCITEMDATA pour les lignes équivalentes (chaque ligne dans la 1ère table a au moins un ou plusieurs lignes équivalentes dans la deuxièmes table).

Les clés de la table PLN_IND_DET :
- NAME
- DATE
- BU
- ITEM
- YEAR
- MONTH
+ autres champs non clés.

Les clés de la table FCITEMDATA
- CONFIG
- ITEM
- YEAR
- PERIOD
- LEVEL
+ autres champs non clés.

Les seuls champs qui me permettent de faire la jointure sont
B.ITEM=A.ITEM
AND B.YEAR=A.YEAR
AND B.PERIOD=A.MONTH


Les deux tables sont trop volumineuses et l’exécution dure des heures (pas moins de 300000 lignes à màj dans la 1ère table).

y-a-t-il un moyen de modifier cette requête pour l’optimiser ?

Merci d’avance