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

时间:2021-01-19 11:55:54

标签: caching snowflake-cloud-data-platform common-table-expression with-clause

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

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

1 个答案:

答案 0 :(得分:1)

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