Hallo!
Eine Lösung habe ich nicht. Nur ein paar Vorschläge, wobei ich nicht beurteilen kann, ob die zutreffend sind (Abfrage oder Interbase). Mit Interbase habe ich noch nicht gearbeitet.
Sind das wirklich beides left outer join oder ist es vielleicht doch nur ein left outer join.
Dann wäre folgendes möglich:
Delphi-Quellcode:
select
TABELLE1.*
from
TABELLE1
join TABELLE2
on TABELLE2.ID2 = TABELLE1.ID1
left outer join TABELLE3
on TABELLE3.ID3 = TABELLE2.ID4
and TABELLE3.FARBE = 'rot'
where
TABELLE1.BEZEICHNUNG = 'test'
oder
Delphi-Quellcode:
select
TABELLE1.*
from
TABELLE1
left outer join TABELLE2
join TABELLE3
on TABELLE3.ID3 = TABELLE2.ID4
and TABELLE3.FARBE = 'rot'
on TABELLE2.ID2 = TABELLE1.ID1
where
TABELLE1.BEZEICHNUNG = 'test'
Sinnvolle Indexes für diese Abfrage wären aus meiner Sicht:
TABELLE1:
ID1, BEZEICHNUNG
TABELLE2:
ID2, ID4
TABELLE3:
ID3, FARBE
Seltsam ist allerdings, das es in der IBConsole wesentlich schneller geht. Machen die IBX-Komponenten auf Delphi Seite noch irgendetwas?. Ereigisse, berechnete Werte, etc?
Grüße