BigQuery视图查询缓存机制问询:视图结果是否会被缓存?
BigQuery视图查询的缓存逻辑
BigQuery不会缓存视图z的完整结果,底层执行逻辑对应你提到的第二种情况,具体细节如下:
- BigQuery处理视图查询时,会自动做视图合并优化:把
select a from z where <where_clause>直接改写为select a from x join y where <where_clause>,不会先算出x join y的全量结果再筛选。 - 你说的两次查询会分别被改写为针对底层表
x、y的独立查询,彼此不会共享x join y的缓存结果。 - 只有当两次查询的完整逻辑完全一致(包括筛选条件、取的字段等),BigQuery才会复用之前的查询缓存。要是只是基于同一个视图但查询逻辑不一样,不会触发视图结果的缓存复用。
内容的提问来源于stack exchange,提问作者paradocslover
相关产品推荐
相关产品推荐

