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

使用 CTE 的雪花查询似乎不会缓存结果

如何解决使用 CTE 的雪花查询似乎不会缓存结果

当我在 SNowflake 中执行包含 CTE(由 WITH 子句定义的公用表表达式)的查询时,结果不会被缓存。

现在的问题是:这是 SNowflake 按设计工作的方式,还是我需要考虑强制执行结果缓存?

解决方法

Snowflake 确实将结果集缓存用于 CTE。您可以通过运行这个简单的两次来确认这一点。应该在历史表中显示第二个没有使用仓库运行。向下钻取到查询配置文件应该显示第二个的执行计划是单个节点,查询结果重用。

com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl

某些条件会使 Snowflake 不使用结果集缓存。一种更常见的方法是使用可以在多次运行中产生不同结果的函数。例如,如果查询包含 current_timestamp(),则每次运行时都会发生变化。

这是使用结果集缓存必须满足的所有条件的完整列表。即便如此,还是要注意满足所有这些条件并不能保证使用结果集缓存。

https://docs.snowflake.com/en/user-guide/querying-persisted-results.html#retrieval-optimization

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