首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么雪花不使用我的物化视图

为什么雪花不使用我的物化视图
EN

Stack Overflow用户
提问于 2022-04-22 18:48:35
回答 2查看 91关注 0票数 2

为什么当我用下面的聚合查询查询基本表时,雪花没有引用我的MV?

代码语言:javascript
复制
create or replace table customer_sample as (
SELECT * FROM 
"SNOWFLAKE_SAMPLE_DATA"."TPCDS_SF100TCL"."CUSTOMER");

create or replace materialized view customer_sample_mv
as 
select c_customer_sk,
sum(c_current_hdemo_sk) total_sum 
from customer_sample 
group by 1;

select c_customer_sk,
sum(c_current_hdemo_sk) total_sum 
from customer_sample 
group by 1;

查询配置文件

EN

回答 2

Stack Overflow用户

发布于 2022-04-22 21:11:08

有很多可能的原因。

  1. 执行查询时,MV仍在生成中。
  2. 雪花决定不用MV就能更快地执行查询。
  3. 运行查询的用户在MV上没有所需的特权
  4. 等。
票数 1
EN

Stack Overflow用户

发布于 2022-04-23 04:17:01

在这个例子中,雪花通过跳过物化视图来做正确的事情。

第一个惊喜:扫描物化视图比重新运行查询要慢:

代码语言:javascript
复制
select *
from customer_sample_mv
order by total_sum desc nulls last
limit 100;
-- 4.4s

vs

代码语言:javascript
复制
select *
from (
    select c_customer_sk,
    sum(c_current_hdemo_sk) total_sum 
    from customer_sample 
    group by 1
)
order by total_sum desc nulls last
limit 100;
-- 3.6s 

因此,雪花通过不选择物化视图来节省时间。

这怎麽可能?

原来没有重复的客户身份证明。所以分组前他们什么也做不了。

代码语言:javascript
复制
select c_customer_sk, count(*) c
from customer_sample 
group by 1
having c>1
order by 2 desc
limit 10;
-- null

从医生那里:

即使物化视图可以替换特定查询中的基表,优化器也可能不使用物化视图。例如,如果基表由字段聚集,优化器可能选择扫描基表(而不是物化视图),因为优化器可以有效地删除分区,并使用基表提供等效的性能。

https://docs.snowflake.com/en/user-guide/views-materialized.html#how-the-query-optimizer-uses-materialized-views

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71973389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档