首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BQ不会降低查询成本

BQ不会降低查询成本
EN

Stack Overflow用户
提问于 2021-02-22 21:05:06
回答 2查看 69关注 0票数 0

因此,基本上在运行子查询以从params表中获取日期参数之后,我将在包含数据的表上运行查询,并根据提供的过滤条件尝试降低查询成本。

不幸的是,BQ引擎无法降低查询成本(即使应用了过滤条件,它也会读取整个表)。有什么想法和变通方法吗?

下面是一个例子:

代码语言:javascript
运行
复制
WITH date_range as (
    SELECT
        min(DATE_KEY) as min_date_key,
        max(DATE_KEY) as max_date_key
    FROM <TABLE_WITH_DATA_PARAMS>
)


SELECT * FROM <TABLE_WITH_DATA>
-- this filtering condition doesn't reduce the query costs
WHERE DATE_KEY between -- DATE_KEY is partitioned field
    (SELECT min_date_key FROM date_range) and 
    (SELECT max_date_key FROM date_range)
EN

回答 2

Stack Overflow用户

发布于 2021-02-22 23:15:46

首先,通常,除非表是partitioned and/or clustered的,否则WHERE子句不会减少扫描的数据量。我知道您的表确实是按字段DATE-KEY进行分区的。

在这种情况下,如果我没有记错的话,问题出在动态表达式上。假设min_date_keymax_date_key的值是根据date_range的值来设置的,这取决于<table_with_data_params> (意味着动态分配),这使得BigQuery扫描所有分区。

请参阅this doc中的第二个示例,其中对此进行了解释。

此外,请注意,您应该避免将SELECT *作为best practice来控制成本,除非这是不可避免的。

票数 2
EN

Stack Overflow用户

发布于 2021-02-23 00:30:57

下面给出了一些Bigquery成本optimization techniques

BigQuery中的查询处理成本优化技术:

  1. 仅查询您需要的数据。
  2. 设置控件以防止意外的人为错误。
  3. 使用caching intelligently.
  4. Partition tables.
  5. Further reduce使用群集清理数据。

了解统一费率与按需定价

对于您的用例分区/集群,如果没有实现,您应该实现。

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

https://stackoverflow.com/questions/66316274

复制
相关文章

相似问题

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