Einzelnen Beitrag anzeigen

hoika

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

Re: SQL-Performanceeinbruch bei SELECT

  Alt 22. Mai 2007, 10:13
Hallo,

also ich weiss zumindestens unter Firebird,
das left outer joins lahm sind.
Im Netz steht dazu, dass left outer joins eines der
kostenintensivsten Statements sind.

Als eine Lösung war eben angegeben, (inner) joins drauszumachen,
indem Dummy-Einträge in den gejointen Tabellen eingetragen werden.
Wenn einem Auftrag eine Rechnung zugeordnet werden kann,
wird beim Auftragsanlegen eine Dummyrechnung (alle Felder NULL),
angelegt, die kann dann einfach gejoint werden.
Beim Anlegen der 1. Rechnung muss natürlich diese Dummy-Rechnung verschwinden.

Ich habe in unserem Programm auch so ne "Auftragsübersicht".
Dort habe ich mich um das Dummy gedrückt
und habe die eine Query auseinandergenommen und pro Left Join
eine eigene Query gemacht.
Der Code bastelt daraus dann wieder ein Grid (über eigene Klasen/Listen).

Performance um 1000% hochgegangen.

Das Problem war, mit ein paar Daten merkst du keine Unterschied.

"Fully populate your database", heisst es ja so schön.


Eine andere Lösung wäre eine Stored Procedure
mit mehreren for/select


Heiko
Heiko
  Mit Zitat antworten Zitat