Anfang des Inhaltsbereichs

Hintergrunddokumentation Verlagerung der Suche auf den FETCH-Zeitpunkt Dokument im Navigationsbaum lokalisieren

Der SQL-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 verlagert werden. Dadurch wird kein Speicher für Ergebnisse belegt, und auf die ersten Ergebnisse kann schnell zugegriffen werden.

Ergebnistabelle wird erzeugt

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 ...

Ergebnistabelle wird nicht erzeugt

Wenn alle folgenden Bedingungen zutreffen, muss keine Ergebnistabelle aufgebaut werden:

     Weder eine DISTINCT-Spezifikation (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.

Beispiele

Die bei den Erläuterungen zum SQL-Optimierer verwendeten Beispiele stützen sich auf die Demo-Datenbank DEMODB und ihre Demo-Daten im Schema HOTEL.

Konzepte des Datenbanksystems, Objekte im Schema HOTEL

Mit Hilfe der EXPLAIN-Anweisung können Sie herausfinden, ob eine Ergebnistabelle erstellt wird (Eintrag in Spalte STRATEGY: RESULT IS COPIED) oder nicht (Eintrag in Spalte STRATEGY: RESULT IS NOT COPIED).

Beispiel

SELECT zip, name FROM hotel.city
  WHERE ROWNO < 5
  ORDER BY name, zip DESC

Qualifikation: ROWNO < 5 ORDER BY name, zip DESC
Primärschlüssel der Tabelle CITY: zip
Indizes über qualifizierte Spalten: keine
genutzte Suchstrategie
: TABLE SCAN

Ergebnis der EXPLAIN-Anweisung

TABLENAME

COLMUN_OR_INDEX

STRATEGY

PAGECOUNT

CITY

 

TABLE SCAN

11

 

 

RESULT IS COPIED
COSTVALUE IS


3

Es wird eine Ergebnistabelle erstellt (RESULT IS COPIED).

Weitere einfache Beispiel-SQL-Anweisungen finden Sie im StrukturlinkSQL-Tutorial.

Siehe auch:

Suchstrategien

Suchstrategien für Joins

Liste aller Suchstrategien

SQL-Referenzhandbuch, FETCH-Anweisung (fetch_statement), DISTINCT-Spezifikation (distinct_spec), SELECT-Anweisung (select_statement)

Ende des Inhaltsbereichs