[Requête] Problème performance
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 :
Code:
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 |
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.
D'avance merci!