Hängt davon ab, was Sie anstreben und was die Abfrage ist.
Im Allgemeinen für jede Zeile in EXPLAIN, die ein Using where
hat , müssen Sie es mit einem Index (possible keys
und keys
Säule). Dies sind Ihre Filter und beinhalten WHERE und ON. Sagen Sie Using index
ist noch besser. Es bedeutet, dass es einen abdeckenden Index gibt und MySQL die Daten direkt aus dem Index abrufen kann, anstatt die Zeile in den Tabellendaten zu besuchen.
Die Zeilen, in denen kein Using where
steht , und es gibt eine große Anzahl von Zeilen zurück, die betrachtet werden sollten. Dies sind Rückgabewerte für alle Zeilen in der Tabelle. Ich weiß nicht, was Ihre Frage ist, also weiß ich nicht, ob ich hier alarmiert sein soll. Versuchen Sie, die Ergebnismenge zu filtern, um die Größe zu reduzieren und die Leistung zu verbessern.
Sie sollten im Allgemeinen versuchen, Using filesort
zu vermeiden oder Using temporary
, obwohl diese nur schlecht sind, wenn Sie sie nicht erwarten.
Filesort erscheint normalerweise mit der ORDER-Klausel. Generell möchten Sie, dass MySQL einen abdeckenden Index verwendet (Using index
), sodass die Zeilen bereits in der richtigen Reihenfolge vom Server zurückgegeben werden. Wenn sie es nicht sind, dann muss MySQL sie danach ordnen, indem sie filesort verwendet.
Using temporary
kann schlecht sein, wenn es sich auf abgeleitete Tabellen bezieht, da sie keine Indizes haben. Es scheint, dass Sie explizit eine temporäre Tabelle mit Indizes erstellt haben, also ist es hier nicht schlecht. Manchmal besteht Ihre einzige Wahl darin, eine abgeleitete Tabelle zu verwenden, und daher Using temporary
.