首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql中的实例化视图

问mysql中的实例化视图
EN

Stack Overflow用户
提问于 2016-11-22 12:49:12
回答 2查看 12.9K关注 0票数 7

如何在mysql中创建物化视图?我无法像在MS SQL Server中那样创建实例化视图。

谁能告诉我在mysql中创建它的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-22 23:01:20

您可以创建一个不可更新的动态视图-如果您在底层表中有(索引的)时间戳,您可以添加一个快照,如下所示:

代码语言:javascript
复制
CREATE VIEW almost_materialzd
AS
SELECT snp.*
FROM snapshot snp
WHERE s.id NOT IN (SELECT id
  FROM source_data sd
  INNER JOIN ref_data rd
  ON rd.value='snapshot of source_data'
  AND sd.update_timestamp>rd.timetamp)
UNION
SELECT *
FROM source_data sd2
INNER JOIN ref_data rd2
ON rd2.value='snapshot of source_data'
AND sd2.update_timestamp>rd2.timetamp);

但更好的解决方案是向底层表添加一个(或多个)触发器,以便在底层表发生更改时重新填充表示实体化视图的表中的相关行。

票数 5
EN

Stack Overflow用户

发布于 2018-06-27 13:38:08

以下是我到目前为止所取得的成功:

使用触发器的

  1. -您可以在构建视图的源表上设置触发器。这最大限度地减少了资源使用量,因为只有在需要时才进行刷新。此外,物化视图中的数据是具有存储过程或realtime-ish
  2. Using脚本的SQL作业-定期进行刷新。您可以更好地控制何时使用资源。显然,您的数据只有在刷新率允许的情况下才是最新的。使用MySQL计划事件的
  3. -类似于2,但在database
  4. Flexviews内部运行-使用贾斯汀提到的FlexDC。最接近真实的实例化视图

我已经在我的文章Creating MySQL materialized views中收集和分析了这些方法,它们的优缺点

期待有关在MySQL中创建物化视图的其他方法的反馈或建议

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40733970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档