我在 mysql 中遇到查询问题。为了绘制图表,我使用这种简单的结构创建了一个具有“X SECOND”间隔的临时表:
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 行且 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_time 不存在,我正在使用日期。
最佳答案
来自 Galz 的回复:
尝试使用 HAVING
而不是 WHERE
:SELECT ... LEFT JOIN ... GROUP BY ... HAVING i.date IS NOT NULL
成功了。
关于mysql - 在 mysql 中缓慢选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5235434/