Czy Twoje zapytania zawierają ORDER BY … LIMIT klauzule?
Jeśli umieścisz ORDER BY … LIMIT po UNION , zostanie zastosowany do całej UNION w tym przypadku nie można używać indeksów.
Jeśli id jest kluczem podstawowym, to zapytanie będzie natychmiastowe:
SELECT *
FROM table
ORDER BY id
LIMIT 1
, ale ten nie:
SELECT *
FROM table
UNION ALL
SELECT *
FROM table
ORDER BY id
LIMIT 1
Wydaje się, że jest to również spowodowane ORDER BY . Sortowanie mniejszego zestawu jest szybsze niż większego.
Czy chcesz posortować wynikowy zestaw?
Jeśli nie, pozbądź się ostatniego ORDER BY .