Bevatten uw vragen ORDER BY … LIMIT clausules?
Als u een ORDER BY … LIMIT na een UNION , wordt het toegepast op de hele UNION , en indexen kunnen in dit geval niet worden gebruikt.
Als id een primaire sleutel is, zal deze vraag onmiddellijk zijn:
SELECT *
FROM table
ORDER BY id
LIMIT 1
, maar deze niet:
SELECT *
FROM table
UNION ALL
SELECT *
FROM table
ORDER BY id
LIMIT 1
Dit lijkt ook te wijten te zijn aan ORDER BY . Het sorteren van een kleinere set is sneller dan een grotere.
Moet de resulterende set worden gesorteerd?
Zo niet, verwijder dan gewoon de laatste ORDER BY .