Thema: Delphi Left Join macht Probleme

Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#2

Re: Left Join macht Probleme

  Alt 13. Mär 2005, 19:44
Zitat von Jens Schumann:
Hat schon jemand gehört, dass der Firebird Probleme mit einem Left Join hat?
[EDIT] Ob ich LEFT JOIN oder LEFT OUTER JOIN schreibe macht keinen Unterschied[/EDIT]
Jupp, hatte ich.
Das Problem ist wohl, dass der rudimentäre Optimizer von FB oder IB keine nested loops kennt und sortierte Indizes nicht mit in den Query plan berücksichtigt.
Beispiel:
Du vergleichst X.A mit Y.B und auf beiden liegt ein sortierter Index. Die Datenbank hätte somit sehr einfach die Möglichkeit sämtliche Wertekombinationen nur einmal vergleichen zu müssen (wofür liegen die Indizes wohl sonst sortiert vor? ), Firebird interessiert das nicht die Bohne. Der wird sich fleißig einen Wolf rödeln und immer alles mit jedem vergleichen...

Besonders krass zeigt sich der Mangel bei sowas:
SQL-Code:
SELECT X
FROM Y
WHERE Z in (SELECT A
             FROM B
             WHRE C = :C)
Firebird wird die sub query FÜR JEDEN DATENSATZ ausführen. Ich kenne kein anderes ernsthaftes DBMS, dass sich sowas erlaubt.
  Mit Zitat antworten Zitat