【发布时间】:2021-01-27 17:46:19
【问题描述】:
在我的 MySQL 数据库中,我有一个由非常复杂的查询(+500 万行,118 列)构建的海量视图,它每天都会更改部分内容。每天,我都要查询这个视图并将它的全部内容插入到一个更大的表中,这个操作可能需要 3.5 到 5 个小时。
我尝试将数据分块导出为 CSV 文件,然后使用LOAD DATA INFILE 以更快的方式加载记录,但导出阶段非常缓慢。
有没有办法检测视图中的变化并只更新更大表中的那些记录?有什么建议可以处理视图中存储的这么多记录吗?
谢谢
【问题讨论】:
-
如何将非常复杂查询的所有结果存储到一个临时表中,然后使用 EXCEPT 与您之前的视图进行比较,然后将这些不同的记录加载到另一个表中
-
这是一个一般很难解决的问题。我的一位前同事开发了一个名为 FlexViews 的解决方案。花了几年的时间来发展。我不知道他是否还在维护它。 percona.com/blog/2011/03/23/…
标签: mysql sql query-optimization