TurboDB Engine Dokumentation

TurboSQL Statements

Previous  Top  Next

Einige Grundsätze für schnelle TurboSQL Abfragen:

Where und Having Klauseln sollten mit einfachen, mit and verknüpften Bedingungen beginnen

Falls es logisch machbar ist sollte die Bedingung so angeordnet sein:

A.a = B.a and C.b > X and (...)

D.h. mit einfachen Vergleichen beginnen, die für die gesamte Suchbedingung erfüllt sein müssen.  Diese simplen Vergleiche sind am besten zur Optimierung  geeignet. Der Optimierer versucht derartige Strukturen automatisch für die gegebene Suchbedingung zu erstellen, kann aber in manchen Fällen nicht schlau genug dazu sein.

Spalten-Bezeichner in Vergleichen separieren

Schreiben Sie

A.a > 2 * :ParamValue,

wird das besser optimiert als

A.a/2 > :ParamValue.

Entscheidend ist hier, dass die Referenz der Spalte A.a alleine auf der linken Seite des Vergleichs steht.

like statt Upper verwenden

Die Bedingung

A.a like 'USA'

kann optimiert werden

Upper(A.a) = 'USA'

dagegen nicht.

Left Outer Joins statt Right Outer Joins verwenden

Die Implementierung von Joins bevorzugt Left Outer Joins. Immer wenn es in einer Anwendung möglich ist, sollte

B left outer join A on B.a = A.a

verwendet werden statt

A right outer join B on A.a = B.a.

Das kann die Abfrage merklich beschleunigen. Der Optimierer macht die Konversion nicht automatisch, da sonst keine Möglichkeit bestünde, die Abfrage von Hand zu optimieren.

Reihenfolge der Tabellen in der From Klausel ändern

Diese Reihenfolge kann eine erhebliche Auswirkung auf die Geschwindigkeit der Abfrage haben. Falls Sie den Eindruck haben Ihre Abfrage könnte schneller sein, versuchen Sie die Reihenfolge der Tabellen zu variieren.

select * from A, B, C
where ...

kann viel schneller sein als

select * from C, B, A
where ...

Normalerweise wird der Optimierer die Reihenfolge der Tabellen, die nicht Teil eines Joins sind, optimal zu wählen, manchmal ist die Assistenz eines Programmierers hilfreich.