AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Wie gruppiert summieren in Abhängikeit von einem Feld?

Wie gruppiert summieren in Abhängikeit von einem Feld?

Ein Thema von BlueStarHH · begonnen am 16. Jul 2016 · letzter Beitrag vom 17. Jul 2016
 
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#13

AW: Wie gruppiert summieren in Abhängikeit von einem Feld?

  Alt 17. Jul 2016, 08:34
Dazu kommt noch die Datenmenge.
Am Ende basieren nun beide Selects auf einem Union, was sie vermutlich gleich schnell/langsam macht.
Es fallen 2 Full Table Scans an.

Was mir noch aufgefallen ist: Das Union ohne All ist kritisch.
Logisch gesehen muss es alle Datensätze inkludieren, müsste also "union all" sein. Die konkrete Select Clause verhindert hier zwar, dass tatsächlich Unique Werte zunächst entstehen und damit gleich wieder verschluckt werden, aber eine unglückliche Umformulierung des Selectteils reicht vielleicht und man verliert unbemerkt Werte.
Mit Union All ist alles easy und man erspart der DB noch die Unique Prüfung, gewinnt also Zeit.

Hier ist noch eine Variante, die dem ursprünglichen Vorschlag von SR etwas näher kommt, ohne Kontotabelle und ohne Union. Da also das plumpe Union fehlt, kann man sich Hoffungen machen, dass ein gezielter Zugriff auf einzelne ID oder kleine Untermengen sehr viel schneller ist, vorausgesetzt die ID Columns sind indiziert:
SQL-Code:
select coalesce(foo1.id, foo2.id) as id,
       --sum( haben ) - sum( soll ) as saldo
       sum(coalesce(foo1.betrag, 0)) - sum(coalesce(foo2. betrag, 0)) as saldo
  from (select id1 as id, betrag from buchung
       -- where id1 =2
       ) foo1
  full outer join
       (select id2 as id, betrag from buchung
       -- where id2 =2
       ) foo2
    on foo2.id = foo1.id
 group by coalesce(foo1.id, foo2.id)
P.S.:Ich merke gerade, dass eine Filterung (und Indexnutzung) natürlich auch im Union möglich ist. Hab ich mich selbst überlistet. (war ja auch noch früh)
Gruß, Jo

Geändert von jobo (17. Jul 2016 um 09:22 Uhr)
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:00 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-2025 by Thomas Breitkreuz