bonjour a tous,
Problème: La mise à jour de 60 000 lignes met entre 3H et 4H !!!
Objectif: Mettre à jour chaque enregistrement selon des valeurs récupéré par une requête chaque enregistrement.
Au début j'avais crée un curseur constituant ma sélection pour effectué la MAJ de chaque enregistrement dans une boucle.
Résultat éffectué en 3H-4H.
Ce temp d'éxecution étant trop long (vous en conviendrez) ma permis de rechercher une autre solution et j'ai trouvé le paramètre BULK COLLECT.
J'ai donc recommencé ma procédure stockée avec:
- ma sélection renvoyant les différentes valeurs dans des tables (précédemment déclaré) du style:
section DECLARE :
* TYPE MA_TABLE IS TABLE TABLE_EXISTANTE.COLONNE%TYPE
mytab MA_TABLE
section BEGIN :
* SELECT CHAMP1 BULK COLLECT INTO mytab FROM TABLE
WHERE CRITERE...
* FORALL i IN 1..mytab.COUNT
UPDATE TABLEMAJ
SET COLONNE = mytable.colonne
WHERE CONDITION;
COMMIT;
Aussi, le serveur utilisé (en production) est avec la version Oracle 8i mais les résultats sont les même sur le serveur de test (Oracle 10g).
Si vous savez d'où viens le problème !
Parce que là je séche !!!
merci
Partager