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 .