MySQL. Vérifier une requête

MySQLProblématique

Pour bien comprendre la problématique, il fallait lire l’article précédent (SEO. PageSpeed et PHP). Mais on va supposer que vous ayez un GROS doute sur la performance d’une requête. Je ne dis pas qu’elle renvoie des choses que vous n’attendiez pas (ou qu’elle ne renvoie pas ce que vous attendiez). Je parle du cas où le résultat est correct. Mais très lent.

Solution

Tout simple. Vous allez dans phpMyAdmin et vous lancez à la main la requête suspecte. MySQL vous indique le temps d’exécution :

  • supérieur à 0.01 s, c’est suspect
  • supérieur à 0.1s, c’est mauvais, il faut faire quelque chose
  • supérieur à 1s, c’est catastrophique, voir plus haut

Il se peut aussi que la requête soit correcte mais qu’elle vous renvoie 324 256 entrées. C’est long à ramener et c’est logique. Mais ce sera encore plus long à afficher et il s’agit là d’un problème de design et de conception et non de requête.

Bref !

Cliquez maintenant sur le choix [Expliquer SQL]. Vous verrez qu’il répète votre requête mais précédée cette fois du mot-clef EXPLAIN. Il vous renverra en particulier les index possibles et le nombre de rows renvoyés.

Une première indication :

  • s’il ne renvoie pas de nom d’index
  • et/ou si il vous renvoie un nombre étonnamment grand de lignes

ça signifie probablement qu’il vous manque une clef d’index et que votre requête balaie donc séquentiellement toute la table.

C’est une erreur de débutant. Tellement de débutant qu’on n’y pense même pas. Et pourtant, elle vient de m’arriver. ON NE RIGOLE PAS.

Pour plus d’informations sur la clause SQL EXPLAIN, je vous renvoie au chapitre de la doc MySQL Syntaxe de EXPLAIN. C’est la base de la fonctionnalité de phpMyAdmin. Celle-ci suffit largement à mon avis.

ET LE TOUR EST JOUÉ ! ALORS ON DIT MERCI QUI ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *