Tại sao bạn không lập hồ sơ truy vấn và xem chính xác điều gì đang xảy ra?
SET PROFILING = 1;
SET profiling_history_size = 0;
SET profiling_history_size = 15;
/* Your query should be here */
SHOW PROFILES;
SELECT state, ROUND(SUM(duration),5) AS `duration (summed) in sec` FROM information_schema.profiling WHERE query_id = 3 GROUP BY state ORDER BY `duration (summed) in sec` DESC;
SET PROFILING = 0;
EXPLAIN /* Your query again should appear here */;
Tôi nghĩ rằng điều này sẽ giúp bạn biết được chính xác vị trí cần thời gian của truy vấn và dựa trên kết quả mà bạn có thể thực hiện các hoạt động tối ưu hóa.