Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment interpréter la sortie de MySQL EXPLAIN ?

Répondre à vos questions :

  • Est-ce que possible_keys les indices que MySQL pourrait vouloir utiliser et les keys sont les indices que MySQL utilise réellement ? Oui c'est exact.

  • Pourquoi l'index index_status_mit_spam non utilisé? Dans la requête, les colonnes ont le même ordre que dans l'index. SQL utilise des statistiques sur les index de la table pour déterminer quel index utiliser. L'ordre des champs dans l'instruction select n'a AUCUN effet sur quel index utiliser. Les statistiques autour des index incluent des informations telles que l'unicité de l'index et d'autres choses. Davantage d'index uniques seront probablement utilisés. En savoir plus à ce sujet ici :http ://dev.mysql.com/doc/innodb/1.1/en/innodb-other-changes-statistics-estimation.html ou ici :http://dev.mysql .com/doc/refman/5.0/en//myisam-index-statistics.html . Ces facteurs déterminent comment MySQL va sélectionner le seul index utiliser. Il n'utilisera qu'UN index .

  • Pourquoi l'index index_datum non utilisé pour le ORDER BY ? MySQL n'utilisera qu'un index et non deux lors d'une requête, car l'utilisation d'un deuxième index ralentira encore plus la requête. Lire un index n'est PAS lire la table. Ceci est lié à l'efficacité opérationnelle de la requête. Voici des réponses qui peuvent expliquer certains concepts :https://dba.stackexchange.com/questions/18528/performance-difference-between-clustered-and-non-clustered-index/18531#18531 Ou L'ajout d'une clause limit à la requête MySQL la ralentit considérablement Ou index MySQL et quand regrouper eux . Ces réponses contiennent beaucoup de détails qui vous aideront à comprendre l'indexation MySQL.

  • Comment puis-je optimiser mes index de table ou la requête ? (La requête ci-dessus nécessite jusqu'à 3 secondes avec environ un million d'entrées dans le tableau). Eh bien, il y a un tri de fichiers ici qui vous ralentit probablement. Il se peut que la table ait trop d'index et que MySQL sélectionne le mauvais.

Vous devez comprendre que les index accélèrent les lectures et ralentissent les écritures dans les tables. Donc, le simple fait d'ajouter des index n'est pas toujours une bonne idée. Les réponses et les conseils ci-dessus devraient vous aider à acquérir une solide compréhension.