Index verwenden, temporär verwenden, Filesort verwenden: Muss Ihre MySQL-Abfrage optimiert werden?
Beim Abrufen von Daten aus Datenbanktabellen ist es wichtig, Folgendes zu tun Schreiben Sie effiziente Abfragen, die die Verarbeitungszeit und den Ressourcenverbrauch minimieren. MySQL bietet verschiedene Optimierungstechniken, um eine schnellere Abfrageausführung zu ermöglichen. Manchmal können Abfragen jedoch immer noch ein suboptimales Verhalten aufweisen. In diesem Fall untersuchen wir eine Abfrage, die „Using index; Using temporary; Using filesort“ in der EXPLAIN-Ausgabe zurückgibt.
Lassen Sie uns die bereitgestellte Abfrage untersuchen:
explain SELECT el.object_id, leo.object_desc, COUNT(el.object_id) as count_rows FROM event_log el LEFT JOIN lookup_event_objects leo ON leo.object_id = el.object_id GROUP BY el.object_id ORDER BY count_rows DESC, leo.object_desc ASC
Verstehen von „Temporär verwenden“
In der MySQL-Dokumentation heißt es, dass eine temporäre Tabelle erstellt werden kann, wenn eine Diskrepanz zwischen den Klauseln ORDER BY und GROUP BY besteht oder wenn ORDER BY oder GROUP BY Spalten aus Tabellen enthält außer der ersten Tabelle in der Join-Warteschlange. In dieser Abfrage sind beide Bedingungen erfüllt. Die ORDER BY-Klausel sortiert nach count_rows, einem berechneten Feld, und die GROUP BY-Klausel gruppiert nach el.object_id aus einer anderen Tabelle. Daher die Verwendung einer temporären Tabelle, um den Sortier- und Gruppierungsprozess zu erleichtern.
Verstehen von „Filesort verwenden“
Da die Sortierung auf einem berechneten Feld count_rows durchgeführt wird, Für diesen Vorgang kann kein Index verwendet werden. Daher greift MySQL auf die Verwendung von Filesort zurück, bei dem die Daten von der Festplatte gelesen und im Speicher sortiert werden, bevor die Ergebnisse zurückgegeben werden.
Optimierung der Abfrage
Um die Leistung zu verbessern Um diese Abfrage zu vereinfachen und die Verwendung temporärer Tabellen und Dateisortierung zu eliminieren, können wir die Erstellung eines geeigneten Indexes in Betracht ziehen, z die Notwendigkeit einer temporären Tabelle und Dateisortierung.
Das obige ist der detaillierte Inhalt vonWarum verwendet meine MySQL-Abfrage „Index verwenden; Temporär verwenden; Filesort verwenden'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!