AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Wie Firebird richtig abfragen weil drucken extrem langsam..
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Firebird richtig abfragen weil drucken extrem langsam..

Ein Thema von erich.wanker · begonnen am 22. Jun 2011 · letzter Beitrag vom 27. Jun 2011
Antwort Antwort
Seite 2 von 2     12   
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Wie Firebird richtig abfragen weil drucken extrem langsam..

  Alt 27. Jun 2011, 12:51
Hallo,

Zitat:
Dabei wird bei "AfterScroll" der Hauptdatenbank die SubDatenbank 1 via "Select from.." gefiltert..
Die SubDatenbank 2 wird bei "AfterScroll SubDatenbank 1" gefiltert
Die SubDatenbank 3 wird bei "AfterScroll SubDatenbank 2" gefiltert
Die SubDatenbank 4 wird bei "AfterScroll SubDatenbank 3" gefiltert
Das wären bei mir dann 4 separate Queries,
mindestens die letzten 3 sind prepared,
weil ja bis auf einen variablen Tei (=Parameter) immer das gleiche abgefragt wird.

Woher weist du eigentlich, dass deine Queries ordentlich "indiziert" sind ?


Heiko
Heiko
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.465 Beiträge
 
Delphi 12 Athens
 
#12

AW: Wie Firebird richtig abfragen weil drucken extrem langsam..

  Alt 27. Jun 2011, 14:01
Für optimale Geschwindigkeit müsste man den gesamten Report neu aufbauen:

Zuerst die ganzen Einzelabfragen auf eine reduzieren:
Code:
select   * {oder einschränken welche Felder gebraucht werden}
from     SubDatenbank1
left join SubDatenbank2 on {hier 1 und 2 verknüpfen}
left join SubDatenbank3 on {hier 2 und 3 verknüpfen}
left join SubDatenbank4 on {hier 3 und 4 verknüpfen}
where    {Bedingung für SubDatenbank1}
Jetzt wird nur noch eine Abfrage an den Server gesendet und der Server muss nur einmal einen großen Datenblock zurückgeben.

Der Report bekommt eine Pipeline die mit dem Dataset verbunden wird.
Im Reportbuilder erstellt man sich für jede Unterabfrage eine Gruppe, gruppiert wird über das Feld aus der Join-Bedingung:

Siehe: Groups.jpg

Die Darstellung der Daten erfolgt im einfachsten Fall so:

Informationen aus SubDatenbank1 in GroupHeader0/GroupFooter0
Informationen aus SubDatenbank2 in GroupHeader1/GroupFooter1
Informationen aus SubDatenbank3 in GroupHeader2/GroupFooter2
Informationen aus SubDatenbank4 in Detail

Siehe: ReportGroups.jpg

Falls nicht für jeden Masterdatensatz auch mindestens ein Detail in der untergeordneten Datenmenge existiert, kann man im BeforePrint des Detail, bzw. GroupHeader/GroupFooter die Felder auf Null prüfen und abhängig davon das jeweilige Band ein- oder ausblenden.
Angehängte Grafiken
Dateityp: jpg Groups.jpg (26,0 KB, 6x aufgerufen)
Dateityp: jpg ReportGroups.jpg (25,5 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 00:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz