ich habe eine einfache Tabelle mit Messwerten
in der Form:
ID integer
ZEITPUNKT timestamp
Wert1 integer
Wert2 integer
Wert3 integer
Wert4 integer
...
Die Messwerte werden seit Jahren jede Viertelstunde gespeichert dh ca 35000 Datensätze pro Jahr.
Ich möchte diese Werte jeweils mit den Vorjahreswerten vergleichen bzw in Diagrammen darstellen.
Die Antwort der Abfrage für Wert1 sollte ungefähr so aussehen:
Code: Alles auswählen
Zeitpunkt 2021 2020 2019 ...
1.1 0:15 1 2 3 ...
1.1 0:30 4 null 6 ...
Code: Alles auswählen
SELECT r.ZEITPUNKT , r.Wert1 as Wert2021, l.Wert1 as Wert2020
FROM WART_DATEN r join WART_DATEN l on r.ZEITPUNKT = l.ZEITPUNKT
where ...
Bei Abfragen über mehrere Jahre (mehrere joins) steigt die Antwortzeit jedoch stark an.
Dramatisch wird die Lage dadurch das es in der Aufzeichnung Lücken gibt (verursacht durch Ausfälle der Messung)
Ich habe den (inner) join durch einen left (outer) join ersetzt, das Ergebnis ist ok aber die Berechnung dauert nun mehrere Stunden oder gar Tage. (Index auf Zeitpunkt ist gesetzt)
Hat jemand eine Idee wie ich das gewünschte Resultat schneller erhalte?
Konrad
Datenbank: Firebird 3.0
OS: Linux