Bonjour,

j'ai cherché à faire une requête update avec sous sélection pour remplir une colonne mais cette requête met à mal notre AS400.
Voici la requête concerné :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
update rembtest.amuaide as ds0 set datefin = (
     select
     max(ds1.dsas0dfde)
     from clilandta.dsas000 as ds1
     where
     ds0.ni = ds1.dsas0n010
     and ds1.dsas0dec like ('1%') and ds1.dsas0eta = '3  '
     and ds1.dsas0sera = 'SAN' and ds1.dsas0aide like '%AMU%'
     and ds1.dsas0ddde < 20110700 and ds1.dsas0dfde > 20110000
)
;
Quand je dis qu'elle met à mal l'AS400, c'est qu'elle utilise 60% de l'AS400 pendant très longtemps.
La table à mettre à jour ne contient que +- 2500 enregistrements, elle est composée de 6 colonnes et personne ne l'utilise à part moi.

Après plus d'une minute d’exécution, j'ai fait un select sur la table d'update pour voir le nombre de ligne déjà mise à jour :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT COUNT(*) FROM rembtest.amuaide WHERE datefin > 0
J'en étais à un peu moins de 100 lignes affectées.
J'ai pu me rendre compte en actualisant plusieurs fois le résultat que la requête update affectait environs une ligne par seconde

Donc j'aimerais savoir ce que j'ai fais de mal dans ma requête qui ne me semble pas compliquée pour avoir un tel résultat