我有一個嚴重的問題。我們的內聯網變得越來越慢。其中一個主要原因似乎是一個很慢的mysql查詢(它出現在slow-query.log中)。 每次打開Intranet站點時都會詢問該查詢。 它看起來像這樣:
緩慢MySQL查詢與多個連接,最大()和組由
SELECT w.Datetime, w.User_ID, w.Status, e.Lastname
FROM worktimes AS w
INNER JOIN employees AS e ON w.User_ID=e.ID
RIGHT JOIN (SELECT max(Datetime) AS Datetime, User_ID
FROM worktimes
WHERE Datetime>".$today." // variable of today 0.00 o'clock
AND Location='".$llocation['ID']."' // variable of one of 9 locations
GROUP BY User_ID) AS v
ON v.User_ID=w.User_ID AND w.Datetime=v.Datetime
ORDER BY e.Lastname;
的worktimes表是高達20萬行(瞬時90K到測試的原因)和13列稍大。整個查詢經歷3到9個循環的循環。
有人想法如何使查詢更快?
編輯:這裏是希望解釋結果。
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 44006 Using temporary; Using filesort
1 PRIMARY w ALL NULL NULL NULL NULL 92378 Using where
1 PRIMARY e eq_ref PRIMARY,ID PRIMARY 4 ais_v1.w.User_ID 1 NULL
2 DERIVED worktimes ref Location Location 767 const 44006 Using index condition; Using where; Using temporary; Using filesort
你可以做查詢的'EXPLAIN SELECT'嗎? – Daan
您的意思是更多細節?好的,我會更新這個問題。 –
不,我的意思是用前面的'EXPLAIN'執行確切的查詢,並在這裏發佈結果。 – Daan