我在使用mysql查詢時遇到問題。用於繪製圖表,我創建具有「X SECOND」的間隔臨時表與此簡單的結構:在mysql中慢選擇
CREATE TEMPORARY TABLE intervals (date DATETIME NOT NULL PRIMARY KEY)
和查詢此SELECT:
SELECT COUNT(dt.Device) AS count, i.date
FROM intervals i LEFT JOIN device_tracker dt ON
i.date <= dt.date AND
i.date + INTERVAL X SECOND >= dt.date
GROUP BY i.date
Device
是主鍵和dt.date是索引。
在device_tracker中有20000行AND 30-35間隔查詢大約需要4-5秒。這是正常的嗎?我能做些什麼來提高速度嗎?
這是解釋:
id select_type table type possible_keys key key_len ref rows Extra
-------------------------------------------------------------------------------------------------------------------
1 SIMPLE i index NULL PRIMARY 8 NULL 29 Using index; Using temporary; Using filesort
1 SIMPLE dt ALL date NULL NULL NULL 21594
編輯::LAST_TIMEBREAK不存在,我使用的日期代替。
您是否擁有dt.Last_Time的索引? – 2011-03-08 16:45:13
是我的錯,我改變了這個領域的名字。索引繼續存在問題。 – 2011-03-08 16:57:35
如果您將間隔計算移到ON條件的右側,解釋是否會改變?如i.date> = dt.date - INTERVAL X SECOND? – Galz 2011-03-08 21:47:04