Anfang des Inhaltsbereichs

 Joins 

Um zu verstehen, wie der Optimierer Suchstrategien für Joins findet, sind einige Informationen darüber notwendig, wie das Datenbanksystem Joins abarbeitet.

Erzeugen von Ergebnistabellen

Joins sind Verbundanweisungen, die Tabellen miteinander verbinden. Dabei werden die einzelnen Tabellen schrittweise verknüpft:

...

       1.      Die erste Tabelle wird durchsucht.

       2.      Das Ergebnis wird in einer Zwischenergebnistabelle gespeichert.

       3.      Die Zwischenergebnistabelle wird nach den Join-Spalten des folgenden Join-Schritts sortiert.

       4.      Die nächste noch vorhandene Tabelle wird durchsucht.

       5.      Die bestehende Zwischenergebnistabelle wird mit der neuen Tabelle verknüpft.

       6.      Das Ergebnis wird in einer neuen Zwischenergebnistabelle gespeichert.

       7.      Diese Zwischenergebnistabelle wird nach den Join-Spalten des folgenden Join-Schritts sortiert.

       8.      Die alte Zwischenergebnistabelle wird gelöscht.

       9.      Gibt es weitere Tabellen, wird die Vorgehensweise ab Schritt 4 wiederholt.

Die letzte Zwischenergebnistabelle ist die vom Benutzer gewünschte Ergebnistabelle.

Reihenfolge der Abarbeitung der Join-Tabellen

Bei der Optimierung sollen Zeit und Speicherplatz eingespart werden. Für Joins bedeutet das, dass auf die Zeilen der zu verknüpfenden neuen Tabellen möglichst direkt zugegriffen werden kann und die Zwischenergebnistabellen möglichst klein sind.

Der Optimierer beginnt die Abarbeitung von Joins deswegen mit den kleinsten Tabellen mit den restriktivsten Suchbedingungen, um zunächst kleine Zwischenergebnistabellen zu erhalten. Der Optimierer legt die Reihenfolge der Abarbeitung also selbst fest; die Reihenfolge, in der die Tabellen in der FROM-Klausel der SELECT-Anweisung spezifiziert sind, hat hierauf keinen Einfluss.

Suchstrategien für Joins

Die folgenden Suchstrategien sind möglich, um ausgehend von den Join-Spaltenwerten der alten Zwischenergebnistabelle auf Zeilen der neuen Tabelle zuzugreifen:

JOIN VIA INDEXED COLUMN

JOIN VIA KEY COLUMN

JOIN VIA KEY RANGE

JOIN VIA MULTIPLE INDEXED COLUMNS

JOIN VIA MULTIPLE KEY COLUMNS

JOIN VIA RANGE OF MULTIPLE INDEXED COL.

JOIN VIA RANGE OF MULTIPLE KEY COLUMNS

Sind die Spaltenlängen der in einem Join-Schritt jeweils zu vergleichenden beiden Spalten nicht gleich, dann können nicht alle Suchstrategien angewendet werden. Um diese Einschränkung zu umgehen, sollten Sie deshalb für Spalten, die über einen Join verbunden werden sollen, denselben Wertebereich definieren.

Mit der EXPLAIN-Anweisung (EXPLAIN-Anweisung für Joins) können Sie herausfinden, welche Suchstrategie der Optimierer anwendet.

Ende des Inhaltsbereichs