【发布时间】:2020-11-27 01:05:03
【问题描述】:
原始表,它看起来像这样。
TIME | NAME | VALUE
---------------------+------------+--------
2020-11-26 11:12:13 | Alice | 10.51
2020-11-26 11:13:13 | Bob | 12.54
2020-11-26 11:14:13 | Cary | 13.53
2020-11-26 11:17:13 | David | 14.54
2020-11-26 12:12:13 | Alice | 11.4
2020-11-26 12:13:13 | Bob | 12.5
2020-11-26 12:14:13 | Cary | 30.12
2020-11-26 12:17:13 | David | 4.04
.....
但是数据数量很多,可能超过1亿。它现在保存数据。
我想按天计算平均值。像这样。
DAY | Alice | Bob | Cary | David
---------------+--------+-------+--------+------
2020-11-26 | 10.955 | 12.52 | 21.825 | 9.29
2020-11-27 | ....
我有 SQL 用于按天获取平均值,但它花费了太多时间。
SELECT
date_format(TIME, '%Y-%m-%d') AS 'DATE',
AVG(CASE WHEN 'Alice' THEN VALUE END) AS 'Alice',
AVG(CASE WHEN 'Bob' THEN VALUE END) AS 'Bob',
AVG(CASE WHEN 'Cary' THEN VALUE END) AS 'Cary',
AVG(CASE WHEN 'David' THEN VALUE END) AS 'David'
FROM data_log
GROUP BY DAY(TIME);
它花了 20 秒,当我想得到一天。当我得到两天时,花 20 分钟。
所以我创建视图以按天获取平均值并选择视图。
我的问题是
每次将数据存储在原始表中时,视图是否会自行更新?
选择视图是否花费了很多时间?
原始表已经有超过 1 亿条数据。创建视图是否花费大量时间?
【问题讨论】: