Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwendung von Index, Verwendung von Temporär, Verwendung von Filesort - wie kann man das beheben?

Nun, das Dokument gibt die genauen Gründe an, wann "Temporär verwendet" angezeigt wird:

Temporäre Tabellen können unter folgenden Bedingungen erstellt werden:

Wenn es eine ORDER BY-Klausel und eine andere GROUP BY-Klausel gibt oder wenn ORDER BY oder GROUP BY Spalten aus anderen Tabellen als der ersten Tabelle in der Join-Warteschlange enthält, wird eine temporäre Tabelle erstellt.

DISTINCT kombiniert mit ORDER BY kann eine temporäre Tabelle erfordern.

Wenn Sie die Option SQL_SMALL_RESULT verwenden, verwendet MySQL eine speicherinterne temporäre Tabelle, es sei denn, die Abfrage enthält auch Elemente (später beschrieben), die auf der Festplatte gespeichert werden müssen.

Ein schneller Scan zeigt, dass Sie an #1 leiden.

Und dieser Blog von 2009 besagt, dass "using filesort" bedeutet, dass die Sortierung nicht mit einem Index durchgeführt werden kann. Da Sie nach einem berechneten Feld sortieren, trifft das auch zu.

Das ist also "falsch".