Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Abfrage mit Summe optimieren (https://www.delphipraxis.net/181588-abfrage-mit-summe-optimieren.html)

EarlyBird 28. Aug 2014 08:48

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 Dokumentation dazu gefunden habe.
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:
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)
und das bei über 22000 Datensätzen.
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.

Sir Rufo 28. Aug 2014 09:01

AW: Abfrage mit Summe optimieren
 
Hier ein Artikel zu dem Thema mit einer interessanten Alternative
http://www.codeproject.com/Articles/...-in-SQL-Server

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

EarlyBird 28. Aug 2014 09:24

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

Sir Rufo 28. Aug 2014 09:27

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.
Seite 3 von 3     123   

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