Bonjour à tous,
Je bosses actuellement sur l'optimisation d'une requête SQL dont les principales instructions sont listées ci-dessous:
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) ?Code:
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);
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