Tôi đang tối ưu hóa truy vấn có liên quan đến một số UNION ALL
trong hai truy vấn. Cả hai Truy vấn đã được tối ưu hóa và chạy ít hơn một giây riêng biệt. Tuy nhiên, khi tôi thực hiện công đoàn của cả hai, phải mất khoảng 30 giây để tính toán mọi thứ.Làm thế nào để cải thiện hiệu suất MYSQL trên UNION ALL?
tôi sẽ không làm phiền bạn với truy vấn cụ thể, kể từ khi họ được tối ưu hóa khi họ nhận được, Vì vậy, hãy gọi cho họ Optimized_Query_1
và Optimized_Query_2
Số hàng từ Optimized_Query_1 là khoảng 100K
Số hàng từ Optimized_Query_2 là khoảng 200K
SELECT * FROM (
Optimized_Query_1
UNION ALL
Optimized_Query_2
) U
ORDER BY START_TIME ASC
tôi yêu cầu cho teh resu lts để được theo thứ tự, nhưng tôi thấy rằng có hoặc không có ORDER BY ở cuối truy vấn mất nhiều thời gian như vậy không nên làm cho không có sự khác biệt.
Dường như UNION ALL tạo bảng tạm thời trong bộ nhớ, từ đó kết quả cuối cùng được đưa ra, có cách nào để giải quyết vấn đề này không?
Cảm ơn
Nếu tôi xóa ORDER BY tổng thời gian để tính toán truy vấn chỉ mất nhiều thời gian. Việc tạo VIEW sẽ giúp ích như thế nào? – jonasMcFerreira
@jonasMcFerreira Hãy xem [thảo luận này] (http://dev.mysql.com/doc/refman/5.5/en/create-view.html#c9063) – Kermit