Aller au contenu Aller au menu
Vous êtes ici : Développement > MySQL > 4) Corriger les requêtes lentes > a) L'optimisation de requête par EXPLAIN
Langue : fr

a) L'optimisation de requête par EXPLAIN

Le premier et principal test est d'utiliser le mot-clé SQL EXPLAIN pour obtenir une analyse de vos requêtes SELECT par le moteur de base de données. Les optimisations visibles à partir d'un EXPLAIN sont les suivantes :

  • si une requête est indiquée n'utiliser aucun index : ajout d'un index sur un champ
  • si une requête retourne un trop grand nombre de résultats : ajouter des critères WHERE plus restrictifs
  • si une requête utilise une table temporaire (qui induit une lenteur supplémentaire) : la correction dépend grandement de la requête, donc il n'y a pas de solution générique

Attention cependant, EXPLAIN fonctionne de façon empirique. Il consulte en effet la cardinalité des différents champs indexés pour opérer le choix des index, ce qui signifie qu'il retourne des résultats différents selon que la base est vide, renseignée avec des jeux de tests, ou renseignée avec les données de production.

Il est donc important de synchroniser les données de production vers l'environnement de développement avant d'effectuer des tests de requête, ou bien pour un nouveau site, de remplir la base avec des données de test (qui seront de toutes façons nécessaires pour les tests de charge).

  1. MySQL
    1. 1) Bien concevoir la base de données
      1. a) Choix des tables – Normalisation des données
      2. b) Choix et typage des champs
    2. 2) Indexer les données
      1. a) L'index : un marque-page dans la base de données
      2. b) Une forte cardinalité pour un bon index
      3. c) Une utilisation récurrente pour un bon index
      4. d) Gare aux contre-optimisations
    3. 3) Optimiser les requêtes SQL
      1. a) Utiliser la richesse du langage SQL
      2. b) Optimiser les jointures
      3. c) Mettre à profit une bonne indexation
    4. 4) Corriger les requêtes lentes
      1. a) L'optimisation de requête par EXPLAIN
      2. b) L'analyse post-mortem
    5. 5) Le serveur MySQL – maintenance et backup
      1. a) Minimiser l'impact des opérations de maintenance
      2. b) Sauvegarde et restauration des bases de données
      3. c) Maintenance des tables