Bonjour, j'ai un traitement en PL/SQL qui est très long.
J'ouvre un curseur et je mets dans un variable le curseur. Et fait kk traitement sur cette variables (en selection pas de curseur for update)
Le SQL du curseur en question mets 2 min sous SQL Plus
Mais dès que le pl fait la même chose il met 15 minutes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 692 ligne(s) sélectionnée(s). Ecoulé : 00 :00 :02.05
ptrace est une procédure de trace dans un fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 [i]ptrace('SGA_B_open1');[/i] open c_accesext; [i]ptrace('SGA_B_open2');[/i] loop [i]ptrace('SGA_B_loop');[/i] fetch c_accesext into r_accesext; [i]ptrace('SGA_B_into');[/i] exit when c_accesext%NOTFOUND OR c_accesext%NOTFOUND IS NULL; [i]ptrace('SGA_B_exit');[/i]
Résultat de la trace :
06/04/05 14:40:40> SGA_B_open1
06/04/05 14:40:40> SGA_B_open2
06/04/05 14:40:40> SGA_B_loop
06/04/05 14:56:04> SGA_B_into
06/04/05 14:56:04> SGA_B_exit
Soit 15 Min et 24 Sec pour le premier fetch (je sais que celui ci correspond au parsing du curseur mais qd même)
ensuite tout vas bien
06/04/05 14:56:06> SGA_B_loop
06/04/05 14:56:06> SGA_B_into
Moins d'une seconde pour le Second fetch.
KK1 a une idée ??
Partager