在 MySQL 中创建视图需要多长时间?

How long does it take to create a view in MySQL?

出处table,看起来是这样的。

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分钟,当我有两天的时候。

所以我创建了按天获取平均值的视图和 select 视图。

我的问题是

每次将数据存储在原始文件中时,视图是否会自行更新 table?

select这个观点花的时间多吗?

原来table已经有上亿条数据了。创建视图是否花费很多时间?

视图仅存储查询代码。当你访问视图时,一切都需要重新计算。

因此,普通视图不会比查询本身更快。

一些数据库支持物化视图。这些与常规视图不同,因为存储了预先计算的数据。但是,MySQL 不支持物化视图。

如果您只需要一天的数据,运行 带有 WHERE 子句的原始查询将数据限制在这一天。