¿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 .