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
.