2017-09-14 50 views
0

目前我有一个表(A),其中列存储了来自其他表(B)的一些汇总值。在B表中更改数据时,通过普通UPDATE A ... FROM SELECT B声明相应更新此列。扁平表vs手册更新

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

Documentation说,大约平顶桌的太简单的好处:

平顶表可以包括通过查询其他表获取值的列。源表和拼合表的操作是解耦的;一个变化不会自动传播到另一个。这最大限度地减少了非规范化表格的其他典型开销。

是的,这个约束看起来比手动更新更清晰。但我只是想明白:在引擎盖下还是完全不同的方式,它只是“语法糖”而已?它在性能上有什么优点或缺点?可能有人已经在使用它并可以分享自己的体验。

回答

2

我记录了拼合桌子的功能,但那是一段时间后,所以我检查了主要开发人员以刷新我的记忆。他的回答:

是的,在某些方面,扁平桌有点类似于“语法糖”。但是,它确实有一些优化使它有所区别。例如,您可以在UPDATE模式下使用SET USING约束刷新列,避免修改未更改的行。此外,没有DML(至少不在Vertica中)可让您同时刷新多个列。

+0

感谢您的解释! – Timurib