gpt4 book ai didi

google-bigquery - 为什么这 2 个查询具有相同的 "GB processed"(因此成本)?

转载 作者:行者123 更新时间:2023-12-04 19:33:20 25 4
gpt4 key购买 nike

我的测试数据由 27,768,767 行组成。我的架构包括一个字符串类型的“消息”列。这些字符串的长度各不相同,但通常为几百个字符。还有一个 int 类型的 user_id 列。这是两个都返回 0 行的查询(where 子句在我的数据中不匹配)。然而,令我惊讶的是,它们都报告处理了 4.69 GB。

SELECT * FROM logtesting.logs WHERE user_id=1;

Query complete (1.7s elapsed, 4.69 GB processed)

.
SELECT * FROM logtesting.logs WHERE message CONTAINS 'this string never appears';

Query complete (2.1s elapsed, 4.69 GB processed)

由于整数存储在 8 bytes ,我原以为在前一个 (user_id) 查询中处理的数据大约是 213MB(2800 万行 * 每个 user_id 8 个字节)。后一个(消息)查询更难估计,因为字符串的长度不同,但我希望它比前一个(user_id)查询大几倍。

是我对 how BigQuery calculates query costs的理解错误的?

最佳答案

无论您做什么,BigQuery 都需要扫描表中的所有行(但不一定是所有列),因此您收到此信息是正常的,因为您的表不会更改。 where 子句仅表示它不会返回数据。它仍然需要处理它。

确保降低处理量的唯一方法是不要选择所有列。 BigQuery 是基于列的,因此如果您不需要所有属性,请不要全部返回(这也意味着它们不会被处理)。这将有助于降低您的成本:)

从历史上看,不支持“select *”以确保人们不会以困难的方式发现它

关于google-bigquery - 为什么这 2 个查询具有相同的 "GB processed"(因此成本)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31320443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com