Bonjour,
Je débute plus ou moins avec Oracle et je reste perplexe par rapport au temps d'une requête qui, lorsqu'elle n'est pas en cache, peut prendre plus d'une minute.
Voici ma requête :
Voici l'explain plan :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 select pat.nom || ' ' || pat.prenom as patient, to_char(pat.dtenai, 'dd/mm/YYYY') dtenaiss, pat.numnat, pat.numpat, o1.numobj, to_char(o1.dtedeb, 'dd/mm/YYYY') dtedebut from patients pat, objets o1 left join objets o2 on o2.numdescription = 50210 and o2.dtedeb >= o1.dtedeb and o2.objdeleted = 0 and o2.numobjpere = o1.numobj where o1.numdescription = 20028 and o1.dtedeb between to_date('01/01/2013', 'dd/mm/YYYY') and to_date('22/02/2013', 'dd/mm/YYYY') and o1.objdeleted = 0 and o2.numdescription is null and pat.numpat = o1.numpat order by o1.dtedeb
Quelqu'un aurait une idée sur cette extrême lenteur?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Plan SELECT STATEMENT ALL_ROWSCost: 115 Bytes: 86 Cardinality: 1 10 SORT ORDER BY Cost: 115 Bytes: 86 Cardinality: 1 9 NESTED LOOPS Cost: 114 Bytes: 86 Cardinality: 1 6 FILTER 5 NESTED LOOPS OUTER Cost: 112 Bytes: 48 Cardinality: 1 2 TABLE ACCESS BY INDEX ROWID TABLE DOSMED.OBJETS Cost: 31 Bytes: 729 Cardinality: 27 1 INDEX SKIP SCAN INDEX DOSMED.I_OBJETS_CDEOBJDTEDEB Cost: 10 Cardinality: 67 4 TABLE ACCESS BY INDEX ROWID TABLE DOSMED.OBJETS Cost: 4 Bytes: 21 Cardinality: 1 3 INDEX RANGE SCAN INDEX DOSMED.I_OBJETS_NUMOBJPERE Cost: 2 Cardinality: 2 8 TABLE ACCESS BY INDEX ROWID TABLE DOSMED.PATIENTS Cost: 2 Bytes: 38 Cardinality: 1 7 INDEX UNIQUE SCAN INDEX (UNIQUE) DOSMED.PK_PATIENTS Cost: 1 Cardinality: 1
En vous remerciant d'avance.
Partager