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 :

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
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
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
Quelqu'un aurait une idée sur cette extrême lenteur?

En vous remerciant d'avance.