¿Sus consultas incluyen ORDER BY … LIMIT cláusulas?
Si pones un ORDER BY … LIMIT después de UNION , se aplica a todo el UNION y los índices no se pueden usar en este caso.
Si id es una clave principal, esta consulta será instantánea:
SELECT *
FROM table
ORDER BY id
LIMIT 1
, pero este no:
SELECT *
FROM table
UNION ALL
SELECT *
FROM table
ORDER BY id
LIMIT 1
Esto también parece deberse a ORDER BY . Ordenar un conjunto más pequeño es más rápido que uno más grande.
¿Necesita ordenar el conjunto resultante?
Si no, simplemente deshazte del ORDER BY final .