Respondiendo a sus preguntas:
-
Es
possible_keys
los índices que MySQL podría querer usar ykeys
Cuáles son los índices que utiliza realmente MySQL? Si eso es correcto. -
¿Por qué el índice es
index_status_mit_spam
? ¿no utilizado? En la consulta, las columnas tienen el mismo orden que en el índice. SQL usa estadísticas en los índices de la tabla para determinar qué índice utilizar. El orden de los campos en la declaración de selección NO tiene efecto en qué índice usar. Las estadísticas sobre los índices incluyen información como la singularidad del índice y otras cosas. Es probable que se utilicen más índices únicos. Lea más sobre esto aquí:http ://dev.mysql.com/doc/innodb/1.1/en/innodb-other-changes-statistics-estimation.html o aquí:http://dev.mysql .com/doc/refman/5.0/en//myisam-index-statistics.html . Estos factores determinan cómo MySQL seleccionará el índice único usar. Solo usará UN índice . -
¿Por qué el índice es
index_datum
? no se utiliza paraORDER BY
? MySQL solo usará un índice, no dos, durante una consulta, ya que usar un segundo índice ralentizará aún más la consulta. Leer un índice NO es leer la tabla. Esto está relacionado con la eficiencia operativa de la consulta. Aquí hay respuestas que pueden explicar algunos conceptos:https://dba.stackexchange.com/questions/18528/rendimiento-diferencia-entre-índice-agrupado-y-no-agrupado/18531#18531 O Agregar una cláusula de límite a la consulta de MySQL la ralentiza drásticamente O Índices MySQL y cuándo agrupar ellos . Estas respuestas tienen muchos detalles que lo ayudarán a comprender la indexación de MySQL. -
¿Cómo puedo optimizar mis índices de tabla o la consulta? (La consulta anterior necesita hasta 3 segundos y tiene alrededor de un millón de entradas en la tabla). Bueno, aquí hay un clasificador de archivos que probablemente lo esté ralentizando. Puede ser que la tabla tenga demasiados índices y MySQL esté seleccionando el incorrecto.
Debe comprender que los índices aceleran las lecturas y ralentizan las escrituras en las tablas. Por lo tanto, solo agregar índices no siempre es una buena idea. Las respuestas anteriores y los consejos deberían ayudarlo a obtener una comprensión sólida.