tengo esta consulta:de MySQL usando filesort depende de LÍMITE
SELECT *
FROM `content` AS `c`
WHERE c.module = 20
AND c.categoryID
IN ('50', '31', '16', '10')
ORDER BY `c`.`released` DESC
LIMIT 5
... y tengo dos máquinas. En la primera máquina, la consulta EXPLAIN devuelve 'Using where' para el campo adicional cuando LIMIT es menor que 3. Cuando LIMIT es mayor que 3, devuelve 'Using where; Usando filesort '(filesort se ejecuta para un límite superior a 3).
En el otro equipo, que es diferente para la misma consulta DB y misma: cuando LÍMITE es mayor de 60 años que se ejecuta filesort.
en ambas máquinas, my.cnf son los mismos !!!
¿Alguien sabe cómo usar filesort depende de LIMIT y cómo esta dependencia se puede cambiar?
Aunque esto puede no ser exactamente relevante, ¿qué índices tiene sobre la mesa? –
Mismo db, misma consulta. La misma (cantidad de) datos en las tablas? Mismos índices? –
Supongo que por "Mismo DB" quiere decir que contiene la misma información, pero está utilizando diferentes discos físicos para cada base de datos. Si es así, te sugiero que ejecutes 'OPTIMIZE TABLE content' en ambas bases de datos, luego prueba de nuevo. Esto potencialmente reordenará los índices en el disco y (más importante aún) actualizará las estadísticas en todos los índices, lo que podría cambiar la forma en que se toman las decisiones sobre cuándo usar qué índice. –