Um zu verstehen, wie
Suchstrategien für Joins gefunden werden, sind einige Hintergrundinformationen über die Abarbeitung von Joins erforderlich.Erzeugen einer Ergebnistabelle für alle durch einen Join verknüpften Tabellen
Über einen Join können Sie bis zu 64 Tabellen miteinander verknüpfen. Dabei erfolgt das Verknüpfen der Tabellen schrittweise, d. h., aus zwei Tabellen wird ein Join gebildet. Jeweils eine weitere Tabelle wird dann mit dem Join-Ergebnis zu einem neuen verknüpft.
Die letzte Zwischenergebnistabelle ist die vom Benutzer gewünschte Ergebnistabelle.
Optimieren der durch eine Join verknüpften Tabellen
Zeit oder Platz bei der Abarbeitung der durch einen Join verknüpften Tabellen kann nur dann gespart werden, wenn die Zwischenergebnistabellen möglichst klein sind und auf die Zeilen der jeweils zu verknüpfenden neuen Tabellen möglichst direkt zugegriffen werden kann.
Der Optimierer ist deshalb bemüht, kleine Tabellen mit restriktiven Suchbedingungen an den Anfang der Serie der zu verarbeitenden Tabellen zu stellen, um ebenfalls kleine Zwischenergebnistabellen zu erhalten.
Die Reihenfolge, in der die Tabellen in der FROM-Klausel der SELECT-Anweisung spezifiziert sind, hat keinen Einfluß auf die Reihenfolge der Abarbeitung. Der Optimierer legt die Reihenfolge der Abarbeitung selbst fest.
Suchstrategien
Die Suchstrategien können Sie mit der EXPLAIN-Anweisung (
EXPLAIN-Anweisung für Joins) angezeigen.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 COLUMNSMehrspaltige Schlüssel- bzw. Indexstrategien
Sind die Spaltenlängen der in einem Join-Schritt jeweils zu vergleichenden 2 Spalten nicht gleich, dann können nicht alle Suchstrategien ausgenutzt werden. Es empfiehlt sich, über einen Join zu verbindende Spalten durch denselben
Wertebereich zu definieren, um diese Restriktion zu umgehen.