BigQuery中IN批量查询与单值循环查询的成本对比咨询
BigQuery两种查询方案的成本对比分析
核心结论:成本差异主要取决于你的表是否按id做了聚类,以及日期分区的总数据量,以下分情况说明:
1. 表已按日期分区 + 按id聚类
这种情况下,BigQuery可以快速定位单个id对应的数据块:
- 方案一(IN查询):一次性扫描
2023-07-20整个分区的所有数据,扫描量等于该分区的总数据大小。 - 方案二(循环单id查询):每次查询仅扫描对应id的聚类块(约6GB),总扫描量为
8000 * 6GB = 48TB。
成本对比:
- 若该日期分区总数据量≈48TB(分区内只有这8000个id的数据):两种方案扫描量基本一致,成本几乎相同,你可以保留现有的Node.js循环方案。
- 若该日期分区总数据量>48TB(分区内还有其他id的数据):方案二总扫描量更小,成本更低。
- 若该日期分区总数据量<48TB:方案一扫描量更小,成本更低。
2. 表仅按日期分区(无id聚类)或无分区
这种情况下,BigQuery没有索引可快速定位单个id数据,每次单id查询都会扫描整个日期分区(或全表):
- 方案一:仅扫描一次
2023-07-20分区的总数据量。 - 方案二:8000次查询会重复扫描该分区8000次,总扫描量为
8000 * 分区总数据量,成本会远高于方案一。
此时必须选择方案一。
其他成本补充
- 写入成本:两种方案最终写入目标表的数据量一致,写入环节成本完全相同。
- 查询次数的微小成本:BigQuery单查询有10MB的最小计费门槛,8000次循环查询会额外产生约80GB的计费量,但这部分相比TB级的扫描量可忽略不计。
内容的提问来源于stack exchange,提问作者trempus2all
相关产品推荐
相关产品推荐

