![]() |
AW: Abfrage mit Summe optimieren
@jobo
Das verschachtelte Select funktioniert auch sehr gut. Ich dachte nur das es vielleicht auch direkt mit der Over Funktion klappt. Mit UNBOUNDED PRECEDING habe ich schon alles versucht was ich in der ![]() Und, es Stimmt, eigentlich ist es egal da ich es für 2005 nicht nutzen kann. Aber es interessiert mich doch sehr, wieviel performanter man es in neuren Versionen lösen kann. @Dejan Vu Das Subselecct habe ich ja schon getestet. Der Optimizer funktioniert da wirklich super. folgende Abfrage benötigt nur noch 22ms
SQL-Code:
und das bei über 22000 Datensätzen.
Select * from(
select lfd, wert, SUM(wert) OVER(ORDER BY lfd ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Summe FROM Table1) as tbl1 where (tbl1.lfd > 20920) Ich denke noch schneller geht es kaum. Das Subselect ist nur unbedeutend langsamer. Ich wollte nur die Abfrage möglichst optimieren und die OVER Funktion richtig verstehen und auch nutzen. |
AW: Abfrage mit Summe optimieren
Hier ein Artikel zu dem Thema mit einer interessanten Alternative
![]() Die Abfrage würde dann wie folgt sein
SQL-Code:
SELECT
a.lfd, a.wert, SUM( b.wert ) as SumWert from Table1 a, Table1 b where b.lfd <= a.lfd group by a.lfd, a.wert order by a.lfd |
AW: Abfrage mit Summe optimieren
Danke Sir Rufo
Auch ein sehr interessanter Ansatz. Und bei der Abfrage weniger Datensätze auch sehr performant. Aber bei vielen Datensätzen doch deutlich langsamer wie die SP mit Temp Table Und viel langsamer wie die OVER Funktion |
AW: Abfrage mit Summe optimieren
Das war auch durchaus zu erwarten, diese Abfrage ist lediglich schneller als die mit dem SubSelect aus dem ersten Thread.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz