现在我正在尝试编写一个查询,以减少数据库中的数据。我的计划是在一分钟内得到平均值。
INSERT INTO reduced (current, total, time_stamp)
SELECT
AVG(current) AS average,
MAX(total) as total,
MAX(time_stamp)
FROM
(
SELECT * from data2 WHERE id <= '500' AND id >= '6'
) AS test
WHERE
time_stamp <= '2019-05-03 21:24:30' AND
time_stamp >= '2019-05-03 21:23:30'
如果我仅执行Select语句,则在0,002秒内完成。但是,一旦我添加了INSERT部分,它就需要几秒钟。 (3-5秒) 这里的问题是,我想对整个数据集重复该查询(总是加一分钟),这样将花费太多时间进行计算。 所以我想知道是否有一种方法可以加快此插入过程。 通常,insert语句也可以非常快速地工作。 因此,我认为在一个查询中链接插入并选择时会出现问题。
答案 0 :(得分:1)
感谢Tim Biegeleisen,我想出了以下解决方案:
INSERT INTO reduced (current, total, time_stamp)
SELECT AVG(current) AS average
, MAX(total) as total
, MAX(time_stamp)
FROM data2
GROUP
BY UNIX_TIMESTAMP(time_stamp) DIV 60
这里的想法是使用group by创建时间间隔,这样我就不必通过循环遍历数据集,而只需要使用一次插入。