
330 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
Ausserdem sehen Sie, ob der Optimierer die Tabellen in optimaler Reihenfolge verkn¨upft.
Um den Optimierer zu zwingen, eine spezielle Verkn¨upfungsreihenfolge bei einem SELECT-
Statement einzuhalten, f¨ugen Sie eine STRAIGHT_JOIN-Klausel hinzu.
Bei nicht einfachen Verkn¨upfungen (Joins) gibt EXPLAIN f¨ur jede Tabelle, die im SELECT-
Statement benutzt wurde, eine Informationszeile zur¨uck. Die Tabellen sind in der Rei-
henfolge aufgelistet, in der sie gelesen werden w ¨urden. MySQL l¨ost alle Joins mit einer
Single-Sweep-Multi-Join-Methode auf. Das bedeutet, dass MySQL eine Zeile aus der ersten
Tabelle liest, dann die passende Zeile in der zweiten Tabelle sucht, dann in der dritten
Tabelle usw. Wenn alle Tabellen verarbeitet wurden, gibt er die ausgew¨ahlten Spalten aus
und geht r¨uckw¨arts durch die Tabellenliste durch, bis eine Tabelle gefunden wird, bei der
es weitere passende Zeilen gibt. Die n¨achste Zeile wird aus dieser Tabelle gelesen, und der
Prozess f¨ahrt mit der n¨achsten Tab elle fort.
Die Ausgabe von EXPLAIN enth¨alt folgende Spalten:
table Die Tabelle, auf die sich die Ausgabezeile bezieht.
type Der Join-Typ. Informationen ¨uber die verschiedenen Typen finden Sie weiter
unten.
possible_keys
Die possible_keys-Spalte gibt an, welche Indexe MySQL verwenden konnte,
um Zeilen in dieser Tabelle zu finden. Beachten Sie, dass diese Spalte v¨ollig
unabh¨angig von der Reihenfolge der Tabellen ist. Das heißt, dass einige der
Schl¨ussel in possible keys m¨oglicherweise bei der tats¨achlich verwendeten Tabel-
lenreihenfolge nicht verwendbar sind.
Wenn diese Spalte leer ist, gibt es keine relevanten Indexe. In diesem Fall
k¨onnen Sie die Performance Ihrer Anfrage wom¨oglich verbessern, indem Sie die
WHERE-Klausel untersuchen, um festzustellen, ob diese auf eine oder mehrere
Spalten verweist, die zweckm¨aßigerweise indiziert werden sollten. Wenn das der
Fall ist, erzeugen Sie einen entsprechenden Index und pr¨ufen Sie die Anfrage
noch einmal mit EXPLAIN. Siehe Abschnitt 7.5.4 [ALTER TABLE], Seite 464.
Um zu sehen, welche Indexe eine Tabelle hat, benutzen Sie SHOW INDEX FROM
tabelle.
key Die key-Spalte gibt den Schl¨ussel an, den MySQL tats¨achlich benutzen wird.
Der Schl¨ussel ist NULL, wenn kein Index gew¨ahlt wurde. Wenn MySQL den
falschen Index w¨ahlt, k¨onnen Sie ihn wahrscheinlich zwingen, einen anderen
Index zu nehmen, indem Sie myisamchk --analyze oder Abschnitt 5.4.6.1 [my-
isamchk syntax], Seite 222 ausf¨uhren oder USE INDEX/IGNORE INDEX benutzen.
Siehe Abschnitt 7.4.1.1 [JOIN], Seite 438.
key_len Die key_len-Spalte gibt die L¨ange des Schl¨ussels an, den MySQL benutzen
wird. Die L¨ange ist NULL, wenn key NULL ist. Beachten Sie, dass Ihnen das an-
gibt, wie viele Teile eines mehrteiligen Schl¨ussels MySQL tats¨achlich benutzen
wird.
ref Die ref-Spalte zeigt an, welche Spalten oder Konstanten beim key benutzt
werden, um Zeilen aus der Tabelle auszuw¨ahlen.
rows die rows-Spalte gibt die Anzahl von Zeilen an, von denen MySQL annimmt,
dass es sie untersuchen muss, um die Anfrage auszuf¨uhren.
Comentarios a estos manuales