在雪花中缓存

时间:2021-02-08 13:34:44

标签: snowflake-cloud-data-platform

试图了解所有 SQL 可用于结果缓存。

考虑多个脚本从一个大表中提取数据,然后执行不同的操作。 如果我们在应用所有脚本中使用的通用过滤器后使用 BIG 表创建一个易失性表,为什么这不使用结果缓存。考虑到 BIG 表数据不会改变。

在下面的示例中,Script1 Step 1 将使用 Compute。其他脚本中的相同步骤是使用 Compute 还是使用 Result Cache

脚本 1: 第 1 步:创建易失性表 VT_TEST (SELECT COL1,COL2 FROM BIG_TABLE WHERE CODE='TEST')

第 2 步:更新 VT_TEST SET COL1='TEST1'

脚本2: 第 1 步:创建易失性表 VT_TEST (SELECT COL1,COL2 FROM BIG_TABLE WHERE CODE='TEST')

第 2 步:更新 VT_TEST SET COL1='TEST2'

脚本: 第 1 步:创建易失性表 VT_TEST (SELECT COL1,COL2 FROM BIG_TABLE WHERE CODE='TEST')

第 2 步:更新 VT_TEST SET COL1='TESTn'

1 个答案:

答案 0 :(得分:1)

答案是可能的。在讨论结果集缓存重用的文档部分中,它列出了使用结果集缓存必须满足的七个条件。如果满足所有七项,则可以使用结果集缓存,但不能保证。

如果要保证Snowflake使用结果集缓存,可以使用result_scan表函数:

server = new ChatServer(...)

在很多情况下,也许是大多数情况下,您根本不需要创建易失性表。您可以简单地执行返回行的查询,并在 24 小时内重复使用结果集缓存中的结果。换句话说,与其像选择一样执行插入,不如简单地执行选择并获取查询 ID。然后,您可以在 24 小时内使用结果集缓存中的结果。