我已将温度存储在 MySQL 数据库中。该表称为temperatures
。例如,它包含列dtime
和temperature
。第一个是测量温度的时间(列类型是DATETIME
),而后者显然是温度(类型是FLOAT
)。
目前,我使用以下查询来获取某个时间段内的温度。
SELECT dtime, temperature
FROM temperatures
WHERE dtime BETWEEN "2012-11-15 00:00:00" AND "2012-11-30 23:59:59"
ORDER BY dtime DESC
我想在结果中添加一天的平均温度。我尝试了以下。
SELECT
dtime AS cPVM,
temperature,
(
SELECT AVG(temperature)
FROM temperatures
WHERE DATE(dtime) = DATE(cPVM)
) AS avg
FROM temperatures
WHERE dtime BETWEEN "2012-11-15 00:00:00" AND "2012-11-30 23:59:59"
ORDER BY dtime DESC
工作正常,但这真的,真的很慢。在此期间获取结果大约需要 5 秒,而第一个(没有平均值)在 0.03 秒内完成。
SELECT DATE(dtime), AVG(temperature)
FROM temperatures
WHERE DATE(dtime) BETWEEN "2012-11-15" AND "2012-11-30"
GROUP BY DATE(dtime)
ORDER BY dtime DESC
然而,这个是在 0.04 秒内完成的。
如何更有效地获取平均温度?