在 AWS Athena 中重用子查询会生成大量扫描数据

问题描述 投票:0回答:1

在AWS Athena上,我尝试使用WITH子句重用计算数据,例如

WITH temp_table AS (...)
SELECT ...
FROM temp_table t0, temp_table t1, temp_table t2
WHERE ...

如果查询速度很快,“扫描的数据”就会非常快。就好像每次在

temp_table
子句中引用时都会计算
FROM
一样。

如果我单独创建临时表并在查询中多次使用它,我不会看到问题。

有没有一种方法可以真正多次重用子查询而不会造成任何损失?

subquery amazon-athena presto
1个回答
0
投票

您可以使用 CTAS (https://docs.aws.amazon.com/athena/latest/ug/ctas.html) 创建临时表,而不是使用 WITH。临时表可以使用 Parquet 格式作为示例,这可以减少接下来的查询中扫描的数据(假设它们不使用所有列)。它还可以防止大量内存消耗,从而可能导致“查询耗尽”错误

© www.soinside.com 2019 - 2024. All rights reserved.