Heim  >  Artikel  >  Datenbank  >  Wie optimiere ich MySQL-Abfragen mit dem Fehler „Index verwenden; temporär verwenden; Dateisort verwenden“?

Wie optimiere ich MySQL-Abfragen mit dem Fehler „Index verwenden; temporär verwenden; Dateisort verwenden“?

Linda Hamilton
Linda HamiltonOriginal
2024-11-04 11:15:29767Durchsuche

How to Optimize MySQL Queries with

Umgang mit dem Fehler „Index verwenden; Temporär verwenden; Dateisort verwenden“ in MySQL-Abfragen

Bei der Arbeit mit MySQL-Abfragen tritt häufig ein Problem auf die Warnung „Index wird verwendet; temporäre Datei wird verwendet; Dateisortierung wird verwendet.“ Diese Meldung weist darauf hin, dass MySQL auf temporäre Tabellen und Dateisortierungsvorgänge angewiesen ist, was sich auf die Leistung auswirken kann.

In diesem speziellen Fall leidet die Abfrage unter zwei Leistungsproblemen:

  1. Verwendung einer temporären Tabelle: Die Abfrage enthält eine ORDER BY-Klausel mit einer anderen GROUP BY-Klausel und Spalten aus mehreren Tabellen. Dies veranlasst MySQL, eine temporäre Tabelle zu erstellen.
  2. Filesort verwenden: Die ORDER BY-Klausel sortiert nach einem berechneten Feld, was nicht mit einem Index durchgeführt werden kann. MySQL greift daher auf die Verwendung von Filesort zurück.

So lösen Sie diese Probleme:

  • Bei Problemen mit temporären Tabellen: Vermeiden Sie unterschiedliche ORDER BY- und GROUP BY-Klauseln oder verwenden Sie Spalten aus derselben Tabelle in diesen Klauseln.
  • Bei Filesort-Problemen: Versuchen Sie, einen Index für das berechnete Feld zu erstellen, das in der ORDER BY-Klausel verwendet wird.

Hier ist eine optimierte Version der Abfrage:

    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

Durch den Wegfall der Verwendung temporärer Tabellen und Dateisortierungsvorgänge sollte diese überarbeitete Abfrage die Leistung verbessern.

Das obige ist der detaillierte Inhalt vonWie optimiere ich MySQL-Abfragen mit dem Fehler „Index verwenden; temporär verwenden; Dateisort verwenden“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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