Wenn die EXPLAIN-Anweisung auf Joins angewendet wird, werden folgende Informationen angezeigt:
● Reihenfolge, in der die Tabellen abgearbeitet werden, wenn die SELECT-Anweisung ausgeführt wird
● Ob ausgehend von den Werten in den Join-Spalten der alten Zwischenergebnistabelle direkt oder über eine Invertierung auf die Zeilen einer neuen Tabelle zugegriffen werden kann
● Suchstrategie, nach der in der jeweils neuen Tabelle gesucht wird, wenn auf die Zeilen dieser Tabelle nicht direkt oder über eine Invertierung zugegriffen werden kann
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
EXPLAIN
SELECT customer.cno, customer.title, customer.name,
customer.zip, city.name, city.state,
customer.address
FROM hotel.customer, hotel.city
WHERE customer.zip = city.zip
Join-Tabellen:
CUSTOMER und
CITY
Qualifikation: customer.zip =
city.zip
genutzte Suchstrategie für
CITY: TABLE
SCAN
genutzte Suchstrategie für
CUSTOMER: JOIN
VIA KEY RANGE
Ergebnis der EXPLAIN-Anweisung
TABLENAME |
COLUMN_OR_INDEX |
STRATEGY |
PAGECOUNT |
CITY |
|
TABLE SCAN |
1 |
CUSTOMER |
|
JOIN VIA KEY RANGE |
1 |
|
|
TABLE TEMPORARY SORTED |
|
|
ZIP |
(USED SORT COLUMN) |
|
|
|
RESULT IS COPIED |
|
Die Join-Abarbeitung beginnt mit dem Zugriff auf die Tabelle CITY. Diese wird mit der Suchstrategie TABLE SCAN abgearbeitet.
Für den Join-Übergang auf die Tabelle CUSTOMER mit der Strategie JOIN VIA KEY RANGE wird die Spalte ZIP genutzt.
Beim Join wird immer eine Ergebnismenge aufgebaut (RESULT IS COPIED).
Weitere einfache Beispiel-SQL-Anweisungen
finden Sie im SQL-Tutorial, Joins: Informationen
aus mehreren Tabellen.
Siehe auch:
Suchstrategien für Joins
SQL-Referenzhandbuch, EXPLAIN-Anweisung (explain_statement), JOIN-Prädikat (join_predicate)