[英]Selecting sortkeys and distkeys for an AWS Redshift table with WHERE and GROUP BY
給出這樣的查詢
with
user_id, aggregate metrics
from
table
where
date < end_time and date >= start_time
group by
user_id
我的 sortkey 和 dist key 應該是什么?
根據我在網上閱讀的文章, date
的排序鍵最有意義,因為我們需要過濾掉不相關的數據。 但我不確定如何/是否可以通過將user_id
添加到 sortkey 或 distkey 來優化 user_id 上的分組。
將user_id
添加到 distkey 的一個潛在問題是,由於該列中的分布嚴重不均勻,某些節點可能需要更長的時間並最終增加查詢所用的時間。
您的排序關鍵標准聽起來是正確的。 請注意,查詢中的“start_time”和“end_time”需要是文字日期或時間戳值,以便查詢優化器利用表元數據進行初始過濾。 還需要分析該表,以便元數據有效。
至於分布鍵,您可以尋找其他列,這些列可以在表傾斜方面充當更好的分布鍵,但仍與 user_id 關聯良好以提供性能優勢。 如果不存在,你可以做一個——當它足夠重要時,我已經為客戶做了幾次。 這是如何發揮作用的一個例子:
而已。 定義一個列,將每個 user_id 值保存在單個切片上,並使表保持均勻分布。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.