Các truy vấn của bạn có bao gồm ORDER BY … LIMIT
không mệnh đề?
Nếu bạn đặt ORDER BY … LIMIT
sau một UNION
, nó được áp dụng cho toàn bộ UNION
và không thể sử dụng các chỉ mục trong trường hợp này.
Nếu id
là khóa chính, truy vấn này sẽ được thực hiện ngay lập tức:
SELECT *
FROM table
ORDER BY id
LIMIT 1
, nhưng cái này sẽ không:
SELECT *
FROM table
UNION ALL
SELECT *
FROM table
ORDER BY id
LIMIT 1
Điều này cũng có vẻ là do ORDER BY
. Sắp xếp một tập hợp nhỏ hơn sẽ nhanh hơn một tập hợp lớn hơn.
Bạn có cần sắp xếp tập hợp kết quả không?
Nếu không, chỉ cần loại bỏ ORDER BY
cuối cùng .