到目前为止,这是我取得的成功:
我一直在我的文章创建 MySQL 物化视图中收集和分析这些方法及其优缺点
期待在 MySQL 中创建物化视图的其他方法的反馈或建议
您可以创建一个不可更新的动态视图 - 如果您在基础表中有(索引)时间戳,您可以添加快照,例如:
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);
Run Code Online (Sandbox Code Playgroud)
但更好的解决方案是向基础表添加一个(或多个)触发器,以在基础表更改时重新填充表示物化视图的表中的相关行。