クエリに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
を削除してください 。