Der Optimierer versucht, nur dann Ergebnistabellen zu bilden, wenn es unbedingt notwendig ist.
Wenn keine Ergebnistabelle aufgebaut werden muss, kann die Suche auf den FETCH-Zeitpunkt (FETCH-Anweisung) verlagert werden. Dadurch wird kein Speicher für Ergebnisse belegt, und auf die ersten Ergebnisse kann schnell zugegriffen werden.
Die Suche kann jedoch nicht immer auf den FETCH-Zeitpunkt verlagert werden, da in einigen Fällen immer eine Ergebnistabelle aufgebaut werden muss:
· SELECT auf mehrere Tabellen (Join)
· SELECT ... FOR REUSE
In den folgenden Fällen muss meistens eine Ergebnistabelle aufgebaut werden:
· SELECT DISTINCT ...
· SELECT ... ORDER BY ...
Wenn alle folgenden Bedingungen zutreffen, muss keine Ergebnistabelle aufgebaut werden:
¡ Weder eine DISTINCT-Spezifikation (<distinct spec>) (bis auf einige Ausnahmen) noch das Syntaxelement FOR REUSE sind angegeben.
¡ Die Spalten, nach denen sortiert werden soll, bilden zusammen in der angegebenen Reihenfolge und Sortierung (aufsteigend oder absteigend) einen Index.
Mit Hilfe der EXPLAIN-Anweisung können Sie herausfinden, ob eine Ergebnistabelle erstellt wird (RESULT IS COPIED) oder nicht (RESULT IS NOT COPIED).