我正在使用MySQL 5.6。我无法像在Oracle中那样创建物化视图。我已经看到一两种解决方案,例如Flexview。
有人可以告诉我以最小的复杂度在MySQL中创建实例化视图的最佳方法(如Oracle中的自动刷新)吗?
我正在使用MySQL 5.6。我无法像在Oracle中那样创建物化视图。我已经看到一两种解决方案,例如Flexview。
有人可以告诉我以最小的复杂度在MySQL中创建实例化视图的最佳方法(如Oracle中的自动刷新)吗?
Answers:
实例化视图在MySQL中不存在。
之前在DBA StackExchange中建议使用 Flexviews
既然您已经拥有它,那么可能需要对它进行一些尽职调查和肘部润滑脂才能继续使用它(如果您尚未这样做)
您可能会考虑设置汇总表。在构建汇总表之前,您将需要索引基表以支持聚合。
这是来自http://www.materialized.info/的旧文章,该文章具有更实用的策略,看起来很有趣。它涉及使用触发器。看起来可能很有趣...
如果您的基表不是那么大,并且您可以每周查询一次整个表,请尝试在CREATE VIEW上User Comments
的MySQL文档部分中获取想法。materialized
在该页面上搜索单词。
我发现了两种在MySQL中实现物化视图的可能解决方案:
创建具有所有必需数据的聚合表,然后在数据来自的表上创建触发器。
创建一个计划程序,该计划程序定期将数据聚合到表中
在这里查看我的博客文章中有关如何实现这两个选项的更多详细信息: 实例化视图MySQL
如果您的基础数据大部分都是稳定的,或者您可以容忍视图和数据之间的差异,那么请考虑使用我为解决这种用例而编写的简单工具。这些使您可以在单独的文件中编写生成表的复杂SQL查询。查询之间的关系是自动派生的,并且查询可以通过Unix make工具以适当的顺序执行。要刷新生成的表,您需要运行make clean all
。该工具对于增量构建复杂的查询非常有用,这些查询根据输入的预先计算的结果有效执行。