EXPLAIN-Anweisung (explain_statement) 
Die EXPLAIN-Anweisung (
explain_statement) beschreibt die bei einer QUERY-Anweisung oder einer SINGLE SELECT-Anweisung (Anweisungen zur Suche nach bestimmten Zeilen vorgegebener Tabellen) intern vom Datenbanksystem angewandte Suchstrategie. Insbesondere wird gezeigt, ob und in welcher Form Schlüsselspalten oder Indizes bei der Suche ausgenutzt werden.Syntax
<explain_statement> ::=
EXPLAIN [(<result_table_name>)] <query_statement>
| EXPLAIN [(<result_table_name>)] <single_select_statement>
Erläuterung
Durch die EXPLAIN-Anweisung kann geprüft werden, welche Auswirkungen das Erzeugen oder Löschen von Indizes (siehe
Index) auf die Wahl der Suchstrategie für die angegebene SQL-Anweisung hat. Außerdem wird es möglich abzuschätzen, welche Zeit das Datenbanksystem für die Abarbeitung der angegebenen SQL-Anweisung benötigen würde. Während der Ausführung der EXPLAIN-Anweisung wird die angegebene QUERY- bzw. SINGLE SELECT-Anweisung nicht ausgeführt.
Informationen zur Arbeitsweise des Optimierers finden Sie in
Optimierer: SAP DB 7.3.
Als Ergebnis der EXPLAIN-Anweisung wird eine Ergebnistabelle (siehe
Ergebnistabellenname) aufgebaut. Die Ergebnistabelle kann benannt werden. Wenn die optionale Benennung fehlt, erhält die Ergebnistabelle den Namen SHOW. Die Ergebnistabelle hat folgende Struktur:Struktur der EXPLAIN-Ergebnistabelle
|
OWNER |
CHAR(64) |
|
TABLENAME |
CHAR(64) |
|
COLUMN_OR_INDEX |
CHAR(64) |
|
STRATEGY |
CHAR(40) |
|
PAGECOUNT |
CHAR(10) |
|
O |
CHAR ( 1) |
|
D |
CHAR ( 1) |
|
T |
CHAR ( 1) |
|
M |
CHAR ( 1) |
Die Reihenfolge der SELECT-Abarbeitung ist durch die Reihenfolge der Zeilen der Ergebnistabelle beschrieben.
STRATEGY
Die Spalte STRATEGY zeigt, welche Suchstrategie(n) benutzt wird/werden und ob eine Ergebnistabelle aufgebaut wird. Eine Ergebnistabelle wird physisch aufgebaut, wenn
RESULT IS COPIED in der Spalte STRATEGY der letzten Ergebniszeile steht.COLUMN_OR_INDEX
Die Spalte COLUMN_OR_INDEX zeigt, welche Schlüsselspalte oder invertierte Spalte oder welcher Index für die Strategie ausgenutzt wird.
PAGECOUNT
Die Spalte PAGECOUNT zeigt, welche Größen für die Tabellen bzw. bei bestimmten Strategien, welche Größen für die Indizes angenommen werden. Diese Größen beeinflussen die Wahl der Suchstrategie.
Die angenommenen Größen werden mit der
UPDATE STATISTICS-Anweisung aktualisiert und können durch Selektieren der Systemtabelle OPTIMIZERSTATISTICS abgefragt werden. Die aktuellen Größen von Tabellen oder Indizes können durch Selektieren der Systemtabellen TABLESTATISTICS und INDEXSTATISTICS ermittelt werden. Werden dabei größere Differenzen zwischen den in OPTIMIZERSTATISTICS und den in TABLESTATISTICS enthaltenen Werten festgestellt, so sollte die UPDATE STATISTICS-Anweisung für diese Tabelle durchgeführt werden.Wenn während einer Suche in einer Tabelle festgestellt wurde, daß die durch die letzte UPDATE STATISTICS-Anweisung ermittelten Werte erheblich zu klein sind, so wird eine Zeile in die Systemtabelle SYSUPDSTATWANTED eingetragen, die den Tabellennamen enthält. In anderen Fällen werden Zeilen in diese Systemtabelle eingetragen, die Spalten von Tabellen beschreiben. Für Tabellen bzw. Spalten von Tabellen, die in der Systemtabelle SYSUPDSTATWANTED beschrieben sind, sollte die UPDATE STATISTICS-Anweisung durchgeführt werden.
In der letzten Zeile steht in der Spalte PAGECOUNT der SELECT-Kostenschätzwert. Auf diesen SELECT-Kostenschätzwert beziehen sich die Angaben für COSTLIMIT und COSTWARNING in der CREATE USER-Anweisung, CREATE USERGROUP-Anweisung, ALTER USER-Anweisung und ALTER USERGROUP-Anweisung.
O, D, T, M
Die Spalten O, D, T und M dienen nur Support-Zwecken und werden deshalb nicht erläutert.