如果你想要一個MERGE語句的例子,請點擊鏈接。這是指向Vertica文檔的鏈接。請記得清楚地遵循說明。您無法使用WHEN NOT MATCHED
和WHEN MATCHED
來編寫合併。它必須遵循文檔中用法描述中給出的順序(這是相反的方式)。但是你可以選擇完全省略一個。
我不確定,如果您知道在Vertica中更新或刪除的數據並未真正從表格中刪除,但只是標記爲「已刪除」。這種數據可以通過運行手動刪除:SELECT PURGE_TABLE('schemaName.tableName');
您可能需要超級用戶權限才能在該架構上執行此操作。 關於這個的更多信息可以在這裏閱讀:Vertica Documentation; Purge Data。 來自Vertica網站的示例:Update and Insert Simultaneously using MERGE
我同意在Vertica 6.0版中支持合併。但是,如果Vertica的AHM或時代管理設置設置爲保存大量歷史記錄(已刪除)的數據,則會降低更新速度。更新速度可能會從糟糕到糟糕甚至糟糕。
我通常會做的是擺脫已刪除(舊)數據,在更新表格後對錶格執行清除操作。這有助於保持更新的速度。 在肯定需要運行更新的地方,合併很有用。特別是可能會更新數百萬行的增量日常更新。
獲得您的答案:我不認爲Vertica在合併中支持子查詢。你會得到以下。
ERROR 0: Subquery in MERGE is not supported
當我也有類似的用例,我使用子查詢創建一個視圖,並使用新創建的視圖作爲源表合併到目標表。這應該讓您在Vertica中繼續使用MERGE操作,並且定期PURGE應該讓您快速保持更新。
事實上,如果在ON子句中使用正確的字段組合,插入或更新期間合併還有助於避免重複的條目,理想情況下應該是主鍵上的連接。
嗨,你可能可以使用關聯連接來更新你的行。它具有比'MERGE'更好的性能(http://vertica.tips/2014/06/23/merge-vs-correlated-join/)。 – Kermit