Bonjour à tous, je vous expose mon soucis.
Nous avons une table VENUE et une table PASSAGE. Une venue peut avoir plusieurs passages, un passage n'a qu'une seule venue.
Un passage possède une date de début, et une date de fin. Pour une venue qui a 3 passages : le passage 1 démarre à D1, termine à D2. Le passage 2 démarre à D2 et se termine à D3. Enfin le passage 3 démarre à D3 et se termine à D4. Avec D1 < D2 < D3 < D4.
Le but de notre requête est de récupérer pour chaque venue, le premier passage (au sens chronologique) ainsi que le dernier.
Pour le moment notre requête qui récupère le premier passage ressemble à ça :
Seulement, le temps d'exécution se compte en plusieurs dizaines de secondes... Niveau volumétrie, nous avons 2 500 000 venues pour 3 000 000 de passages... Si vous avez une idée/piste d'amélioration, je suis preneur.
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
18 SELECT PASSAGE.ID_VENU as idVenue, PASSAGE.DATE_DEBUT as dateDebut FROM PASSAGE INNER JOIN ( SELECT PASSAGE.ID_VENU, MIN(PASSAGE.DATE_DEBUT) as mini FROM PASSAGE GROUP BY PASSAGE.ID_VENU ) INNERTMP ON INNERTMP.ID_VENU = PASSAGE.ID_VENU AND INNERTMP.mini = PASSAGE.DATE_DEBUT
D'avance merci!
Partager