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 : 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
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!