Bonjour,
Je cherche à optimiser la requête suivante:
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).
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')
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
Partager