未使用 Snowflake 中的搜索优化服务

Search Optimization Service in Snowflake is not used

我对 Snowflake 上的搜索优化服务有疑问:

我的数据库中有两个 tables Store_sales 和客户,并且都启用了搜索优化服务,我有一个查询在 store_sales.date 列中过滤日期列加入客户数据如下:

select ss.SS_SOLD_DATE_SK, ss.SS_ITEM_SK, c.C_FIRST_NAME from STORE_SALES ss
join SS_CUSTOMER c 
on ss.SS_CUSTOMER_SK = c.C_CUSTOMER_SK  
where ss.SS_SOLD_DATE_SK = 2451148;

在执行计划中,我看到在扫描 STORE_SALES table 时使用了搜索优化服务,而在 SS_CUSTOMER table 上未使用搜索优化服务,因为这个完整table 扫描查询速度变慢,类似地,如果我对客户有点查找过滤器并且查询 STORE_SALES 不使用 STORE_SALES 上的搜索优化。如何使用同时在 table 和 table 上使用的搜索优化服务?

执行计划如下:

搜索优化如何影响联接

搜索优化服务不会直接提高联接的性能。但是,如果 table 启用了搜索优化并且谓词是选择性的,它可以提高在连接之前从 table 过滤行的性能。

两个table都不需要启用搜索优化。 使用搜索优化的决定是针对每个 table 独立做出的。

以上内容摘自 the documentation,我在其中添加了自己的 粗体

因此,在这种情况下,查询 optimizer/planner 似乎已决定客户 table 不需要 SO。不幸的是,我没有看到任何关于如何(或是否)可以强制它使用 SO 的信息,也没有看到任何关于 如何 它决定是否使用 SO 的信息。我已经阅读了关于查询谓词中不同值的数量很大的指南:通过查询过滤器操作访问的列中至少有一个至少有 100k-200k 不同值。