Bonjour à tous,
Je n'arrive pas à obtenir des performances sur cette requête :
Le but étant de récupérer les compteurs pour lesquels, à la date immédiatement inférieure, la valeur est supérieure.
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 SELECT C1.IDVersions_Parcs, TI.Libellé AS LibTypeCompteur, C1.IDCompteurs AS IDCompteursJour, C1.Date AS DateJour, CAST(C1.Valeur AS UNSIGNED) AS ValeurJour, C2.IDCompteurs AS IDCompteursPrécédent, C2.Date AS DatePrécédente, CAST(C2.Valeur AS UNSIGNED) AS ValeurPrécédente, CONCAT(C1.IDCompteurs,C1.Date,C2.Date) AS Tri FROM Compteurs C1 INNER JOIN TypesInformation TI ON TI.IDTypesInformation=C1.IDTypesInformation INNER JOIN Compteurs C2 ON ( C2.IDTypesInformation=C1.IDTypesInformation AND C2.IDVersions_Parcs=C1.IDVersions_Parcs AND C2.Date=( SELECT MAX(Date) FROM Compteurs WHERE Date<C1.Date AND IDTypesInformation=C1.IDTypesInformation AND IDVersions_Parcs=C1.IDVersions_Parcs ) ) WHERE TI.IDNaturesInformation=2 AND C1.Date>='2012-02-01' AND CAST(C1.Valeur AS UNSIGNED)>CAST(C2.Valeur AS UNSIGNED) ORDER BY IDCompteursJour, DateJour DESC, DatePrécédente DESC LIMIT 1000
J'ai eu beau la tourner dans tous les sens ... elle est (très) lente.
Merci pour votre aide
Partager