Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 
#10

AW: SQL optimieren

  Alt 24. Mai 2013, 07:19
Jens, meine Antwort unter Deiner war mißverständlich, aber Du warst schon gemeint. Hach ich bin eben etwas ruppig, manchmal.
Du hast mir beim Frühstückskäffchen einen kalten Lappen ins Gesicht geklatscht. Schuft!

where b. ... führt im besten Fall zu einen Full Index Scan in A und B. Im schlimmsten Fall wird die Abfrage intern als Cross Join ausgeführt.

Nein. Ich schrieb ...

SQL-Code:
--- Vorschlag #2 (meiner!)
Select *
from #A a
  left join #B b
    on b.ID1=a.ID1
   and b.ID2 is null
-- nicht von mir where b.ID2 is null
where a.ID2 is null

Der Code wird in der Regel optimierter ausgeführt, wenn die Where Klausel den äußeren "Select" filtert und die Datenmenge der Joins mit Conditions dezimiert wird.


Dein MSSQL testet versucht mal den inneren, mal den äußeren Teil als erstes auszuführen und merkt sich den optimaleren Weg für alle weiteren Abfragen. Ob der Firebird des Fragestellers dies auch kann weiß ich leider nicht.

Geändert von jensw_2000 (24. Mai 2013 um 07:21 Uhr)
  Mit Zitat antworten Zitat