¿Por qué mysql muestra 2 resultados diferentes en 2 serveres diferentes para la misma consulta?

Tengo la misma instrucción MySQL SQL ejecutándose en 2 bases de datos diferentes (mi máquina local y mi máquina de producción). El que está en mi máquina local funciona más rápido mientras que el de la producción es lento. Aquí están los resultados de EXPLAIN en cada uno.

Máquina local enter image description here

Máquina de producción enter image description here

Prefiero no publicar la consulta exacta si no es necesario.

La única diferencia que puedo decir entre los 2 es que mi máquina local está ejecutando la versión 5.6 mientras el server de producción está ejecutando 5.5. Además, los datos en mi server tienen 3 días de antigüedad, que no son muchos loggings. Específicamente, estoy mirando la fila 2 de la explicación donde un tipo dice "ref" y el otro dice "TODO" y hay una diferencia de más de 28k filas que se leen. La única diferencia entre las 2 estructuras es el campo TimeModified que no está siendo utilizado por la consulta

En MySQL 5.5 y versiones anteriores, una tabla derivada nunca tuvo índices. La única forma en que se accedería a una tabla derivada era mediante un análisis completo. (Ese es el ALL que ve en la salida EXPLAIN del server 5.5).

Con MySQL 5.6.3, MySQL tiene la capacidad de agregar un índice a una tabla derivada, lo que puede mejorar el performance. (Tenga en count el nombre del índice: <auto_key1> en la salida EXPLAIN del server 5.6).

Referencia: https://dev.mysql.com/doc/refman/5.6/en/subquery-optimization.html

Puse esto como un comentario primero, pero creo que también es la respuesta 🙂

Las estructuras de su tabla pueden ser idénticas, pero probablemente sus datos no lo son.

La cantidad de filas en sus tablas influirá en el plan de ejecución.