Mysql
 sql >> Database >  >> RDS >> Mysql

Perché le query UNION sono così lente in MySQL?

Le tue domande includono ORDER BY … LIMIT clausole?

Se inserisci un ORDER BY … LIMIT dopo un UNION , viene applicato all'intero UNION e in questo caso non è possibile utilizzare gli indici.

Se id è una chiave primaria, questa query sarà istantanea:

SELECT  *
FROM    table
ORDER BY id
LIMIT 1

, ma questo no:

SELECT  *
FROM    table
UNION ALL
SELECT  *
FROM    table
ORDER BY id
LIMIT 1

Questo sembra essere dovuto anche a ORDER BY . L'ordinamento di un set più piccolo è più veloce di uno più grande.

Hai bisogno che il set risultante sia ordinato?

In caso contrario, elimina l'ultimo ORDER BY .