Hi,
ich habe eine simple MySQL-Tabelle, die etwas vereinfacht wie folgt aufgebaut ist:
Als Ergebis möchte ich eine Tabelle haben, in der zu jedem Messpunkt id die letzte Zeit und der dazugehörige Messwert enthalten ist, also für das obige Minimalbeispiel
Bisher nehme ich folgende SQL:
Mein Problem ist das Zeitverhalten ab eines bestimmten Datenumfanges.
Bei ca 500.000 Datensätzen liegt das schon im zweistelligen Sekundenbereich.
Die Ursache liegt wohl im inneren SELECT/GROUP BY begründet.
Bin dankbar für jeden Tipp.
(Für Andreas: Muss gerätebedingt bei MySQL bleiben.)
LG jspit
ich habe eine simple MySQL-Tabelle, die etwas vereinfacht wie folgt aufgebaut ist:
Code:
id datumzeit messwert ---------------------------------------- 0 2014-01-01 00:00:00 65 1 2014-01-01 00:00:00 34 2 2014-01-01 00:00:00 16 0 2014-01-01 00:10:00 66 1 2014-01-01 00:10:00 30 0 2014-01-01 00:20:00 60 1 2014-01-01 00:20:00 31 2 2014-01-01 00:20:00 17 0 2014-01-01 00:30:00 66 1 2014-01-01 00:30:00 38
Code:
0 2014-01-01 00:30:00 66 1 2014-01-01 00:30:00 38 2 2014-01-01 00:20:00 17
Code:
SELECT t1.id, t1.datumzeit, t1.messwert FROM messdat AS t1 JOIN ( SELECT id, MAX(datumzeit) AS mdz FROM messdat GROUP BY id) AS t2 ON t1.id = t2.id AND t1.datumzeit = t2.mdz
Bei ca 500.000 Datensätzen liegt das schon im zweistelligen Sekundenbereich.
Die Ursache liegt wohl im inneren SELECT/GROUP BY begründet.
Bin dankbar für jeden Tipp.
(Für Andreas: Muss gerätebedingt bei MySQL bleiben.)
LG jspit
Kommentar