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.
<explain_statement>
::=
EXPLAIN [(<result_table_name>)]
<query_statement>
| EXPLAIN [(<result_table_name>)] <single_select_statement>
Konzepte des Datenbanksystems, EXPLAIN-Anweisung
Durch die EXPLAIN-Anweisung kann geprüft werden, welche Auswirkungen das Erzeugen oder Löschen von Indizes 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.
Als Ergebnis der EXPLAIN-Anweisung wird eine Ergebnistabelle aufgebaut. Die Ergebnistabelle kann benannt werden. Wenn die optionale Benennung fehlt, erhält die Ergebnistabelle den Namen SHOW.
Struktur der EXPLAIN-Ergebnistabelle
SCHEMANAME |
CHAR(64) |
TABLENAME |
CHAR(64) |
COLUMN_OR_INDEX |
CHAR(64) |
STRATEGY |
CHAR(40) |
PAGECOUNT |
CHAR(10) |
Die Reihenfolge der SELECT-Abarbeitung ist durch die Reihenfolge der Zeilen der Ergebnistabelle beschrieben.
Die Spalte COLUMN_OR_INDEX zeigt, welche Schlüsselspalte oder invertierte Spalte oder welcher Index für die Strategie ausgenutzt wird.
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.
Siehe auch:
Konzepte des Datenbanksystems, Spalte STRATEGY, Liste aller Suchstrategien
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 OPTIMIZERINFORMATION 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 OPTIMIZERINFORMATION 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, dass 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 den SQL-Anweisungen zum Anlegen und Ändern von Benutzern (z.B. CREATE USER-Anweisung, ALTER USER-Anweisung).
Siehe auch:
Konzepte des Datenbanksystems, SQL-Optimierer
Datenbankverwaltung
im CCMS, SQL-Optimierer im
CCMS