Inkluderar dina frågor ORDER BY … LIMIT
klausuler?
Om du lägger en ORDER BY … LIMIT
efter en UNION
, tillämpas den på hela UNION
, och index kan inte användas i det här fallet.
Om id
är en primärnyckel, kommer denna fråga att vara omedelbar:
SELECT *
FROM table
ORDER BY id
LIMIT 1
, men den här kommer inte:
SELECT *
FROM table
UNION ALL
SELECT *
FROM table
ORDER BY id
LIMIT 1
Detta verkar också bero på ORDER BY
. Att sortera en mindre uppsättning är snabbare än en större.
Behöver du att den resulterande uppsättningen sorteras?
Om inte, ta bara bort den sista ORDER BY
.