我有一个查询,它生成大约2000万行,需要通过时间戳DESC进行排序。当我使用“在临时表中保存查询结果”设置时,查询工作正常,但当设置目标表时,查询就会失败,“查询执行过程中超出了资源:无法在分配的内存中执行查询。峰值使用率:限制的126%。顶级内存使用者:按操作顺序: 97%其他/未属性: 3%”。我不想设置限制,因为我需要所有的输出行来继续我的分析。临时表和目标表之间有什么区别。为什么一个人工作而另一个人不工作。最后,我怎样才能解决这个问题?我能想到的唯一方法是减少行数,因此基本上将其分解为多个“相同”的查询,这些查询获取最终结果的分区,但这将使我的成本增加大约5-10倍。
发布于 2020-03-27 20:20:20
将评论总结为答复:
OVER(PARTITION BY).ARRAY_AGG() --一种将为整个表保持数据排序的替代方法:使用CLUSTERING BY。然后,所有查询都将只查询数据的这一部分.请参见:
https://stackoverflow.com/questions/60882407
复制相似问题