Hallo,
ich habe ein kleines Laufzeitproblem und hoffe Ihr könnt mir vieleicht helfen.
Ich habe 2 Tabellen. Eine Tabelle mit einer Zeitreihe und eine Tabelle mit Ereignissen (von / bis).
Nun brauche ich als Ergebniss die Anzahl an Ereignissen zu den Zeiten aus der Zeitreihe.
Mein Problem ist nun, dass durch das "between" der join immer als nested loop ausgeführt werden muss und das führt zu zu langen Laufzeiten.
Gibt es eine Möglichkeit das Statement umzuformen um die Komplexität zu reduzieren (oder gar einen ganz anderen Ansatz)?
Mir fällt irgendwie keine bessere Lösung ein.
Gruß
Azdak
P.S.: DB ist ein MS SQL-Server 2005, Zeitreihe hat pro Auswertung ~50k Zeilen und Ereignisse ~2mio Zeilen
ich habe ein kleines Laufzeitproblem und hoffe Ihr könnt mir vieleicht helfen.
Ich habe 2 Tabellen. Eine Tabelle mit einer Zeitreihe und eine Tabelle mit Ereignissen (von / bis).
Nun brauche ich als Ergebniss die Anzahl an Ereignissen zu den Zeiten aus der Zeitreihe.
Code:
select zeit, count(*)
from Zeitreihe z left join Ereignisse e on z.zeit between e.von and e.bis
group by zeit
Gibt es eine Möglichkeit das Statement umzuformen um die Komplexität zu reduzieren (oder gar einen ganz anderen Ansatz)?
Mir fällt irgendwie keine bessere Lösung ein.
Gruß
Azdak
P.S.: DB ist ein MS SQL-Server 2005, Zeitreihe hat pro Auswertung ~50k Zeilen und Ereignisse ~2mio Zeilen