2017-09-14 26 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