Bonjour,

Je suis sous Oracle 9i. Je n'arrive pas à comprendre les résultats suivants obtenus suite à un Tkprof sur une trace d'un traitement batch :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT code
    FROM dossier
    WHERE dosid = :b1
 
call       count       cpu     elapsed       disk      query    current   rows
------  -------- ---------- ---------- ---------- ----------  ----------
Parse     1            0.00       0.00        0           0            0           0
Execute  516265    7.73      7.72        0            0            0           0
Fetch     516265    4.97      4.89        1123    1548795     0       516265
------- ------  -------- ---------- ---------- ---------- ----------  
total   1032531     12.70      12.61       1123    1548795          0      516265
 
Rows     Row Source Operation
-------  ---------------------------------------------------
 516265  TABLE ACCESS BY INDEX ROWID DOSSIER 
 516265   INDEX UNIQUE SCAN PK_DOSSIER
On voit que le fecth est répété 516265 fois (Count) et que le nombre de ligne retourné est 516265 (Rows) ma question est la suivante pour l'interprétation :
  1. est ce que je dois comprendre qu'1 fetch me ramène 1 ligne ?
  2. ou bien chaque fecth me ramène 516265 lignes ?


Mon doute provient de l'explain qui indique également 516265 lignes de retournées... donc je pencherais plus pour la réponse 2...

Si je suis dans le cas 1, mon traitement est très lourd car il parcourt 1548795 query pour récupérer 1 ligne et je dois donc essayer d'améliorer ce traitement.
Si je suis dans le cas 2, mon traitement est pas trop mal puisqu'il parcourt 1548795 query pour ramener 516265 lignes et on voit sur l'explain plan qu'il utilise bien un index...


je vous remercie par avance pour votre aide

Bonne journée
Tux