Enthalten Ihre Abfragen ORDER BY … LIMIT? Klauseln?
Wenn Sie einen ORDER BY … LIMIT eingeben nach einem UNION , wird es auf die gesamte UNION angewendet , und Indizes können in diesem Fall nicht verwendet werden.
Wenn id ein Primärschlüssel ist, wird diese Abfrage sofort ausgeführt:
SELECT *
FROM table
ORDER BY id
LIMIT 1
, aber dieses hier nicht:
SELECT *
FROM table
UNION ALL
SELECT *
FROM table
ORDER BY id
LIMIT 1
Dies scheint auch an ORDER BY zu liegen . Das Sortieren eines kleineren Satzes ist schneller als ein größerer.
Soll die Ergebnismenge sortiert werden?
Wenn nicht, entfernen Sie einfach das abschließende ORDER BY .