Verlagerung der Suche auf den FETCH-Zeitpunkt
Ein Ziel der Optimierung ist das Einsparen von Speicherplatz, d. h es soll vermieden werden, Ergebnistabellen zu bilden. Abgesehen von den Fällen, in denen das Syntaxelement FOR REUSE oder das Vorhandensein eines Joins die Ergebnistabellenbildung erzwingt, wird nach Möglichkeit auf den Aufbau einer Ergebnistabelle verzichtet.
Eine mögliche
Suchstrategie ist daher die Verlagerung der Suche auf den FETCH-Zeitpunkt (FETCH-Anweisung) ohne Aufbau einer Ergebnistabelle. Dadurch wird kein Speicher für Ergebnisse belegt, ein schneller Zugriff auf die ersten Ergebnisse ist möglich und ein schneller Vergleich der erhaltenen mit den gewünschten Ergebnissen kann durchgeführt werden.Die Verlagerung der Suche auf den FETCH-Zeitpunkt ist nicht bei allen SQL-Anweisungen möglich. Hier eine Übersicht über einige SQL-Anweisungen, die eine Verlagerung nicht zulassen:
SELECT auf mehrere Tabellen (Join)
SELECT ... FOR REUSE
SELECT DISTINCT ... (in den meisten Fällen)
SELECT ... ORDER BY ... (in den meisten Fällen)
SELECT ... ORDER BY
Wenn die
ORDER-Klausel angegeben wurde, kann auf den Aufbau einer Ergebnistabelle nur verzichtet werden, wenn alle folgenden Bedingungen zutreffen:Mit Hilfe der
EXPLAIN-Anweisung können Sie anzeigen, ob eine Ergebnistabelle erstellt wird (RESULT IS COPIED) oder nicht (RESULT IS NOT COPIED).