Heim > Datenbank > MySQL-Tutorial > Warum verwendet meine MySQL-Abfrage „Index verwenden; Temporär verwenden; Filesort verwenden'?

Warum verwendet meine MySQL-Abfrage „Index verwenden; Temporär verwenden; Filesort verwenden'?

Mary-Kate Olsen
Freigeben: 2024-11-04 09:42:02
Original
818 Leute haben es durchsucht

Why is My MySQL Query Using

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage