Maison > base de données > tutoriel mysql > Comment optimiser les requêtes MySQL avec l'erreur « Utilisation de l'index ; Utilisation temporaire ; Utilisation du tri de fichiers » ?

Comment optimiser les requêtes MySQL avec l'erreur « Utilisation de l'index ; Utilisation temporaire ; Utilisation du tri de fichiers » ?

Linda Hamilton
Libérer: 2024-11-04 11:15:29
original
830 Les gens l'ont consulté

How to Optimize MySQL Queries with

Traitement de l'erreur « Utilisation de l'index ; Utilisation temporaire ; Utilisation du tri de fichiers » dans les requêtes MySQL

Une préoccupation courante lorsque l'on travaille avec des requêtes MySQL est de rencontrer l'avertissement "Utilisation de l'index ; Utilisation de temporaire ; Utilisation du tri de fichiers." Ce message indique que MySQL s'appuie sur des tables temporaires et des opérations de tri de fichiers, ce qui peut avoir un impact sur les performances.

Dans ce cas particulier, la requête souffre de deux problèmes de performances :

  1. Utilisation d'une table temporaire : La requête contient une clause ORDER BY avec une clause GROUP BY différente et des colonnes de plusieurs tables. Cela déclenche MySQL pour créer une table temporaire.
  2. Utilisation de Filesort : La clause ORDER BY trie selon un champ calculé, ce qui ne peut pas être effectué à l'aide d'un index. MySQL a donc recours à l'utilisation de filesort.

Pour résoudre ces problèmes :

  • Pour un problème de table temporaire : Évitez d'avoir des clauses ORDER BY et GROUP BY différentes ou utilisez des colonnes de la même table dans ces clauses.
  • Pour le problème de tri de fichiers : Essayez de créer un index sur le champ calculé utilisé dans la clause ORDER BY.

Voici une version optimisée de la requête :

    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
Copier après la connexion

En éliminant l'utilisation de tables temporaires et d'opérations de tri de fichiers, cette requête révisée devrait améliorer les performances.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal