Bonjour à tous,
Je connais actuellement un problème avec une requête.
Elle est tres lente, passe sur un environnement avec une volumétrie relative mais pas sur un environnement avec une volumétrie beaucoup plus importante. Qui plus est, ce n'est qu'une partie de la requête finale que j'essaie de faire donc il vaudrait mieux que je trouve autre chose.
Pour la requête, je cherche à extraire sur une période donnée (arbitrairement ici 05/02/2008 ->05/03/2008) la liste de 10 enregistrements de durée la plus longue, la date de chaque enregistrement, le minimum sur la durée et la date du minimum.
Voici ma requête SQL :
Voyez vous comment je pourrais faire autrement ma requête pour qu'elle soit plus rapide et que je puisse la lancer sur un autre environnement?
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
17 select * from ( select MABASE.NAME,max(JBDTFIN-JBDTDEBUT),JBDTDEBUT,P.min,P.date_debut_min FROM MABASE left join ( select NAME,min(JBDTFIN-JBDTDEBUT) as min,JBDTDEBUT as date_debut_min FROM MABASE where (JBDTDEBUT>=to_date('05/02/2008','DD/MM/YYYY')) and (JBDTFIN<=to_date('05/03/2008','DD/MM/YYYY')) and JBSTATE = 'Ok' group by NAME,JBDTDEBUT ) P on P.name = MABASE.name where (JBDTDEBUT>=to_date('05/02/2008','DD/MM/YYYY')) and (JBDTFIN<=to_date('05/03/2008','DD/MM/YYYY')) and JBSTATE = 'Ok' group by MABASE.NAME,MABASE.JBDTDEBUT,P.min,P.date_debut_min order by max(JBDTFIN-JBDTDEBUT) DESC) WHERE rownum <= 10
Merci d'avance
Partager