332 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
Using temporary
Um die Anfrage aufzul¨osen muss MySQL eine tempor¨are Tabelle
erzeugen, die das Ergebnis enth¨alt. Das passiert typischerweise,
wenn Sie ein ORDER BY auf eine andere Spalte setzen als auf die, die
Sie im GROUP BY angegeben haben.
Where used
Eine WHERE-Klausel wird benutzt, um zu begrenzen, bei welchen
Zeilen auf
¨
Ubereinstimmung in der n¨achsten Tabelle gesucht wird
oder welche Zeilen an den Client geschickt werden. Wenn Sie
diese Information nicht haben und die Tabelle vom Typ ALL oder
index ast, ist vielleicht in Ihrer Anfrage etwas falsch (falls Sie nicht
vorhaben, alle Zeilen aus der Tabelle zu holen / zu untersuchen).
Wenn Sie wollen, dass Ihre Anfragen so schnell wie m¨oglich laufen, sollten Sie
auf Using filesort und Using temporary achten.
Die verschiedenen Join-Typen sind unten aufgef¨uhrt, sortiert vom besten zum schlechtesten
Typ:
system Die Tabelle hat nur eine Zeile (= Systemtabelle). Das ist ein spezieller Fall des
const-Join-Typs.
const Die Tabelle hat h¨ochsten eine ¨ubereinstimmende Zeile, die am Anfang der An-
frage gelesen werden wird. Weil es nur eine Zeile gibt, k¨onnen Spaltenwerte in
dieser Zeile vom Optimierer als Konstanten betrachtet werden. const-Tabellen
sind sehr schnell, weil sie nur einmal gelesen werden!
eq_ref Aus dieser Tabelle wird f¨ur jede Zeilenkombination der vorherigen Tabellen
eine Zeile gelesen. Das ist der bestm¨ogliche Join-Typ, ausgenommen die const-
Typen. Er wird benutzt, wenn alle Teile eines Indexes vom Join benutzt werden
und der Index UNIQUE oder ein PRIMARY KEY ist.
ref Alle Zeilen mit ¨ubereinstimmenden Index-Werten werden f¨ur jede Zeilenkom-
bination der vorherigen Tabellen gelesen. ref wird benutzt, wenn der Join nur
das am weitesten links stehende Pr¨afix des Schl¨ussels benutzt, oder wenn der
Schl¨ussel nicht UNIQUE oder ein PRIMARY KEY ist (mit anderen Worten, wenn
der Join auf der Grundlage des Schl¨usselwerts keine einzelne Zeile ausw¨ahlen
kann). Wenn der Schl¨ussel, der benutzt wird, nur mit einigen wenigen Zeilen
¨ubereinstimmt, ist dieser Join-Typ gut.
range Nur Zeilen, die innerhalb eines angegebenen Bereichs sind, werden abrufen,
wobei ein Index benutzt wird, um die Zeilen auszuw¨ahlen. Die key-Spalte gibt
an, welcher Index benutzt wird. key_len enth¨alt den l¨angsten Schl¨usselteil, der
benutzt wurde. Die ref-Spalte ist f¨ur diesen Typ NULL.
index Das ist dasselbe wie ALL, ausser dass nur der Index-Baum gescannt wird. Das
ist ¨ublicherweise schneller als ALL, weil die Index-Datei ¨ublicherweise kleiner ist
als die Daten-Datei.
ALL F¨ur jede Zeilenkombination der vorherigen Tabellen wird ein kompletter Tabel-
lenscan durchgef¨uhrt. Das ist normalerweise nicht gut, wenn die Tabelle die
Comentários a estes Manuais