Bonjour à tous,

Je bosses actuellement sur l'optimisation d'une requête SQL dont les principales instructions sont listées ci-dessous:

Code sql : 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
18
19
20
 
  create table work.perim_rev4 as
      select
         rev3.e_date,
         rev3.c_c_mef,
         rev3.c_c_creat,
         rev3.c_c_dele_mef,
    		 d_noms_r_h.d_forc as d_forc
      from
         input_rev3 rev3 
      left join 
         d_noms_r_histo
            on
            (
               rev3.sic_id =d_noms_r_histo.sic_id
            )
      group by
         rev3.sic_id
      having
         rev3.even_rang = max(rev3.even_rang);
Cette requête met beaucoup de temps à s’exécuter et j'aimerais savoir comment procéder pour réduire les temps de traitements. Est il judicieux de créer une table intermédiaire dans laquelle je pourrais grouper les rev3.sic_id et ne retenir que le max(rev3.even_rang) ?

A titre de rappel on peut avoir plusieurs even_date pour le même sic_id et le but est de conserver le dernier (le max) even_date.

Merci d'avance