Hallo allemaal,
ik heb een tabel met meetdata (entiteit_id, timeStamp, waarde, index op entiteit_id, timeStamp) waaruit ik over een jaar graag de eerste resultaten van de maand wil hebben. Nu ben ik zelf tot de volgende query gekomen:
Het resultaat komt na ongeveer 2,5 seconde terug bij 10 entiteiten die elk eens per uur een punt hebben geinsert in dat jaar en ziet er als volgt uit:
... ETC
Dit gaat nog een eindje door maar het idee zal duidelijk zijn. Heeft er iemand enig idee hoe dit sneller kan. Zelf denk ik dat ik om die YEAR en MONTH functie heen zal moeten.
Alvast bedankt voor de hulp!
ik heb een tabel met meetdata (entiteit_id, timeStamp, waarde, index op entiteit_id, timeStamp) waaruit ik over een jaar graag de eerste resultaten van de maand wil hebben. Nu ben ik zelf tot de volgende query gekomen:
SQL:
1
2
3
4
5
6
| SELECT entiteit_id, waarde, TIMESTAMP FROM `water` WHERE TIMESTAMP BETWEEN '2010-06-01' AND '2011-06-01' GROUP BY YEAR( TIMESTAMP ) , MONTH( TIMESTAMP ) , entiteit_id |
Het resultaat komt na ongeveer 2,5 seconde terug bij 10 entiteiten die elk eens per uur een punt hebben geinsert in dat jaar en ziet er als volgt uit:
code:
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
| 9011559";"18509";"2010-06-01 00:00:17" "9011560";"13378";"2010-06-01 00:00:23" "9011561";"15341";"2010-06-01 00:00:40" "9011565";"21334";"2010-06-01 00:00:48" "9011567";"20474";"2010-06-01 00:00:06" "9011568";"42237";"2010-06-01 00:00:36" "9011569";"3184";"2010-06-01 00:00:33" "9011570";"65660";"2010-06-01 00:00:59" "9011571";"22180";"2010-06-01 00:00:16" "9011573";"22049";"2010-06-01 00:00:58" "9011574";"16068";"2010-06-01 00:00:16" "9011575";"127";"2010-06-01 00:01:00" "9011576";"18978";"2010-06-01 00:00:46" "9011559";"27088";"2010-07-01 00:00:16" "9011560";"23063";"2010-07-01 00:00:09" "9011561";"24831";"2010-07-01 00:00:57" "9011565";"27465";"2010-07-01 00:00:06" "9011567";"29992";"2010-07-01 00:00:08" "9011568";"48911";"2010-07-01 00:00:55" "9011569";"3283";"2010-07-01 00:00:46" "9011570";"78376";"2010-07-01 00:00:39" "9011571";"38577";"2010-07-09 10:15:05" "9011572";"41703";"2010-07-31 11:45:04" "9011573";"28496";"2010-07-01 00:00:08" "9011574";"25006";"2010-07-01 00:00:06" "9011575";"160";"2010-07-01 00:00:21" "9011576";"26073";"2010-07-01 00:02:30" "9011559";"35293";"2010-08-01 00:00:08" "9011560";"27467";"2010-08-01 00:00:41" |
... ETC
Dit gaat nog een eindje door maar het idee zal duidelijk zijn. Heeft er iemand enig idee hoe dit sneller kan. Zelf denk ik dat ik om die YEAR en MONTH functie heen zal moeten.
code:
1
2
| id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE water ALL timeStamp NULL NULL NULL 557186 Using where; Using temporary; Using filesort |
Alvast bedankt voor de hulp!
[Voor 1% gewijzigd door RobIII op 05-07-2011 20:38. Reden: Code tags toegevoegd]