Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que as consultas UNION são tão lentas no MySQL?


Suas consultas incluem ORDER BY … LIMIT cláusulas?

Se você colocar um ORDER BY … LIMIT após um UNION , ele é aplicado a todo o UNION , e os índices não podem ser usados ​​nesse caso.

Se id é uma chave primária, esta consulta será instantânea:
SELECT  *
FROM    table
ORDER BY id
LIMIT 1

, mas este não irá:
SELECT  *
FROM    table
UNION ALL
SELECT  *
FROM    table
ORDER BY id
LIMIT 1

Isso também parece ser devido a ORDER BY . Classificar um conjunto menor é mais rápido do que um maior.

Você precisa que o conjunto resultante seja classificado?

Caso contrário, basta se livrar do ORDER BY final .