微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Snowflake / SQL中的WITH:与临时表的比较

如何解决Snowflake / SQL中的WITH:与临时表的比较

除编码器首选项外,是否有任何理由在SNowflake中使用一系列WITH(SELECT。。。)语句/子句,而不创建几个临时表。是否存在性能或其他问题会导致一种方法偏爱另一种方法

解决方法

我对此有一些实际经验。我们在ETL中采用了混合方法

CTE将结果保存在内存中,因此在处理大量数据时节省了I / O成本。根据我们处理涉及100亿行的ETL的经验,CTE花了2个小时,而表格处理花了4.5个小时。但是我们应该谨慎选择武器,CTE并不能在所有情况下都表现良好。在以下情况下,您必须先进行一些测试,然后再使用CTE

  1. 当您的ETL查询具有7-8个以上的步骤
  2. 查询是大表和小表的组合
  3. 数据量低,有机会重用转换逻辑

还请记住,CTE无法利用元数据,因此联接和扫描的行数估计将不准确,优化器将无法优化查询路径。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。