Kapitel 6: MySQL-Optimierung 331
Extra Diese Spalte enth¨alt zus¨atzliche Informationen dar¨uber, wie MySQL die Anfrage
aufl¨osen wird. Folgende unterschiedliche Text-Zeichenketten k¨onnen in dieser
Spalte stehen:
Distinct MySQL wird die Suche nach weiteren Zeilen f¨ur die aktuelle
Zeilenkombination nicht fortsetzen, nachdem er die erste passende
Zeile gefunden hat.
Not exists
MySQL war in der Lage, eine LEFT JOIN-Optimierung der Anfrage
durchzuf¨uhren, und wird keine weiteren Spalten in dieser Tabelle
f¨ur die vorherige Zeilenkombination mehr untersuchen, nachdem er
eine Zeile gefunden hat, die den LEFT JOIN-Kriterien entspricht.
Hier ist ein Beispiel daf¨ur:
SELECT * FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
Angenommen, t2.id ist mit NOT NULL definiert. In diesem Fall
scannt MySQL t1 und schl¨agt die Zeilen in t2 ¨uber t1.id nach.
Wenn MySQL eine ¨ubereinstimmende Zeile in t2 findet, weiß er,
dass t2.id nie NULL sein kann und scannt nicht durch den Rest der
Zeilen in t2, die dieselbe id haben. Mit anderen Worten, f¨ur jede
Zeile in t1 muss MySQL nur ein einziges Mal in t2 nachschlagen,
unabh¨angig davon, wie viel ¨ubereinstimmende Zeilen es in t2 gibt.
range checked for each record (index map: #)
MySQL hat keinen gut geeigneten Index zum Benutzen gefunden.
Statt dessen wird er f¨ur jede Zeilenkombination in der vorherigen
Tabelle eine Pr¨ufung vornehmen, welchen Index er benutzen soll
(falls ¨uberhaupt) und diesen Index benutzen, um Zeilen aus der
Tabelle abzurufen. Das ist nicht sehr schnell, aber immer noch
schneller, als einen Join ohne Index durchzuf¨uhren.
Using filesort
MySQL braucht einen zus¨atzlichen Durchgang, um herauszufinden,
wie die Zeilen in sortierter Reihenfolge a/jointfilesconvert/293675/bgerufen werden sollen.
Die Sortierung wird durchgef¨uhrt, indem in Abh¨angigkeit
vom join type durch alle Zeilen durchgegangen wird und der
Sortierschl¨ussel und Zeiger auf die Zeilen f¨ur alle Zeilen gespeichert
wird, die dem WHERE entsprechen. Danach werden die Schl¨ussel
sortiert. Schließlich werden die Zeilen in sortierter Reihenfolge
a/jointfilesconvert/293675/bgerufen.
Using index
Die Spalteninformation wird aus der Tabelle a/jointfilesconvert/293675/bgerufen, indem nur
Informationen aus dem Index-Baum benutzt werden, ohne dass
zum Suchen zus¨atzlich in den tats¨achlichen Zeilen gelesen werden
muss. Das kann gemacht werden, wenn alle benutzten Spalten der
Tabelle Teil desselben Indexes sind.
Komentáře k této Příručce