Вашите заявки включват ORDER BY … LIMIT
клаузи?
Ако поставите ORDER BY … LIMIT
след UNION
, той се прилага към целия UNION
, и в този случай не могат да се използват индекси.
Ако id
е първичен ключ, тази заявка ще бъде незабавна:
SELECT *
FROM table
ORDER BY id
LIMIT 1
, но този няма да:
SELECT *
FROM table
UNION ALL
SELECT *
FROM table
ORDER BY id
LIMIT 1
Това също изглежда се дължи на ORDER BY
. Сортирането на по-малък набор е по-бързо от по-голям.
Трябва ли полученият набор да бъде сортиран?
Ако не, просто се отървете от крайния ORDER BY
.