我有一個有1.4B記錄的大表。我每天都必須使用UPDATE語句像下面的(小,但不是非常小)來更新基於另一個表中的一些條件這個大表的一些記錄:在Redshift中優化大表的更新
UPDATE my_large_table set a_field_that_needs_to_be_updated = 1 WHERE join_field IN (SELECT join_field FROM another_table where some_other_conditions
這需要有時超過30分鐘,這是我們的超時值,這樣就會中止作業。
- 一個簡單的解決方案是增加超時值,但這不是我想要的路線。
- 另一個優化可能是在表模式中使用join_field作爲distkey,但有更常見的連接用例,因此另一個字段設置爲distkey。
所以我想知道如果我可以將此查詢分解成多個分區查詢。 join_field實際上是一個字母數字散列值,我可以看看字段的第一個字符,並使用LIKE在36個小塊(0到9和A到Z)中運行語句。但我想知道是否有更好的方法。