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