sql >> Base de Datos >  >> RDS >> Mysql

MySQL usa filesort en la columna TIMESTAMP indexada

En este caso, MySQL no está usando su índice para ordenar, y es algo BUENO. ¿Por qué? Su tabla contiene solo 64k filas, el ancho de fila promedio es de aproximadamente 26 bytes (si agregué los tamaños de columna correctamente), por lo que el tamaño total de la tabla en el disco debe ser de alrededor de 2 MB. Es muy económico leer solo 2 MB de datos del disco a la memoria (probablemente en solo 1-2 operaciones de disco o búsquedas) y luego simplemente realice la ordenación de archivos en la memoria (probablemente una variación de la ordenación rápida).

Si MySQL hiciera la recuperación por orden de índice como desea, ¡tendría que realizar 64000 operaciones de búsqueda en disco, un registro tras otro! Habría sido muy, muy lento.

Los índices pueden ser buenos cuando puede usarlos para saltar rápidamente a una ubicación conocida en un archivo enorme y leer solo una pequeña cantidad de datos, como en la cláusula WHERE. Pero, en este caso, no es una buena idea, ¡y MySQL no es estúpido!

Si su tabla fuera muy grande (más que el tamaño de la RAM), entonces MySQL ciertamente comenzaría a usar su índice, y esto también es bueno.