是否可以仅在数据发生更改时更新 mysql 视图?

Posted

技术标签:

【中文标题】是否可以仅在数据发生更改时更新 mysql 视图?【英文标题】:Is it possible to only update mysql view when there is changes in data? 【发布时间】:2014-03-21 14:08:09 【问题描述】:

我有一个非常慢的查询(大数字),运行需要 60 秒。

我认为将结果设为 VIEW 可以解决问题,但我现在看到视图会针对对视图的每个查询进行更新。

问题是这个视图的真实数据每月只更新一次,因此不需要在每次查询时更新。

这可能吗?仅在原始表发生更改时才更新视图?

【问题讨论】:

【参考方案1】:

从 5.6 开始,不能使用 mysql 视图。最简单的方法是创建一个每月填充一次的报表,而不是动态视图。您可以创建一个时间触发事件来运行 SQL 来填充它:dev.mysql.com/doc/refman/5.5/en/create-event.html

【讨论】:

是的,这是一个解决方案。我只是在想,如果视图只能在数据更改时更新,那就更简单了。 @KristianRafteseth 这是一个尝试,但基本上就是我所描述的:***.com/questions/16687736/…【参考方案2】:

也许您可以尝试编写一个包含插入/更新/删除功能的函数并更新视图。或者你可以使用 mysql 触发器并在表有修改时更新视图

【讨论】:

以上是关于是否可以仅在数据发生更改时更新 mysql 视图?的主要内容,如果未能解决你的问题,请参考以下文章

数据库中的视图比较

QTableView() 仅在选择时更新更改

[更新mysql表后仅在单个列中丢失数据

仅当行已更改时,MySQL 才在更新后触发

合并 - 仅在值更改时更新

仅在数据更改时刷新 DataTable