sql >> Base de Datos >  >> RDS >> Mysql

¿Por qué las consultas UNION son tan lentas en MySQL?

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