在对具有数十亿行的表执行GROUP BY EACH时,我解决了资源超出错误.但是,解决方案成本非常高,我希望降低这些成本.
错误几乎不是由偏斜的分组键引起的,而是由分组键的基数太高(是否有固定的最大值?).
我的解决方案
SELECT key FROM
(SELECT key FROM [table] WHERE ABS(HASH(key)) % 4 = 0 GROUP EACH BY key),
(SELECT key FROM [table] WHERE ABS(HASH(key)) % 4 = 1 GROUP EACH BY key),
(SELECT key FROM [table] WHERE ABS(HASH(key)) % 4 = 2 GROUP EACH BY key),
(SELECT key FROM [table] WHERE ABS(HASH(key)) % 4 = 3 GROUP EACH BY key)
Run Code Online (Sandbox Code Playgroud)
这有效,但它多次读取我的多TB表,我相信这有点贵.有没有降低成本的解决方案?
谢谢,鲁本
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |