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

MySQL utilise filesort sur la colonne TIMESTAMP indexée

Dans ce cas, MySQL n'utilise pas votre index pour le tri, et c'est une BONNE chose. Pourquoi ? Votre table ne contient que 64k lignes, la largeur moyenne des lignes est d'environ 26 octets (si j'ai bien ajouté les tailles de colonne), donc la taille totale de la table sur le disque devrait être d'environ 2 Mo. Il est très bon marché de lire seulement 2 Mo de données du disque en mémoire (probablement en seulement 1-2 opérations de disque ou recherches), puis effectuez simplement un tri de fichiers en mémoire (probablement une variante du tri rapide).

Si MySQL effectuait la récupération par ordre d'index comme vous le souhaitez, il devrait effectuer 64 000 opérations de recherche de disque, un enregistrement après l'autre ! Cela aurait été très, très lent.

Les index peuvent être utiles lorsque vous pouvez les utiliser pour accéder rapidement à un emplacement connu dans un fichier volumineux et lire une petite quantité de données, comme dans la clause WHERE. Mais, dans ce cas, ce n'est pas une bonne idée - et MySQL n'est pas stupide !

Si votre table était très grande (plus que la taille de la RAM), alors MySQL commencerait certainement à utiliser votre index - et c'est aussi une bonne chose.