Répondre à vos questions :
-
Est-ce que
possible_keys
les indices que MySQL pourrait vouloir utiliser et leskeys
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 leORDER 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.