扁平的表与手动更新



当前我有一个带有列的表(a),该列存储了其他表(b)中的一些汇总值。在B表中的更改数据上,此列通过普通UPDATE A ... FROM SELECT B语句相应地更新。

Vertica 8.1提供了相关功能:表面表面。使用SET USING约束,它看起来像是相同的过程:按需(通过致电REFRESH_COLUMNS())读取源表并将结果写入目标列。

文档说明了扁平表的好处太简短:

扁平的表可以包括通过查询其他表来获取其值的列。源表和扁平桌子上的操作被解耦;一个变化不会自动传播到另一个。这最大程度地减少了典型的不利桌子的开销。

是的,此约束看起来比手动更新更干净。但是我只想理解:是在引擎盖下使用相同操作的"语法糖"还是完全不同的方式?性能是否有任何优点或缺点?可能是有人已经使用它,可以分享自己的经验。

我记录了扁平的表功能,但这已经有一段时间了,所以我签到了领导开发人员以刷新我的内存。他的回答:

是的,在某些方面,扁平的表格类似于"语法糖"。但是,它确实具有一些优化,可以将其与众不同。例如,您可以在更新模式下使用约束来刷新列,从而避免修改不变的行。另外,没有DML(至少在Vertica中)可以同时刷新多个列。

最新更新