一个在时间戳和ID上带有WHERE子句的BigQuery查询仍然会触发全表扫描。在SQL更改最少的情况下,如何减少扫描的字节数?
选择一个答案
点击一个选项来检查您的答案。
正确答案: 使用分区列和聚簇列重新创建表。.
为什么这是答案
正确答案是“使用分区列和聚簇列重新创建表”。BigQuery中的分区和聚簇是优化查询性能和减少扫描字节的关键技术。当查询包含时间戳和ID上的WHERE子句时,如果表没有分区或聚簇,BigQuery会执行全表扫描。通过在时间戳列上进行分区并在ID列上进行聚簇,BigQuery可以仅扫描与WHERE子句条件匹配的相关分区和聚簇块,从而显著减少扫描的数据量和查询成本。 其他选项不正确: “为每个ID创建一个单独的表”会引入管理复杂性,并且在ID数量庞大时不可行,也无法有效解决扫描问题。 “使用LIMIT关键字来减少返回的行数”只影响返回结果的数量,不影响查询扫描的数据量。BigQuery仍然会扫描所有符合WHERE子句条件的行,然后才应用LIMIT。 “使用bq query --maximumbytesbilled标志来限制计费的字节数”是一个安全机制,用于防止意外的大额账单,但它不会优化查询本身或减少实际扫描的字节数;如果查询超过限制,它会失败。
通过考试 — 无需无休止地寻找答案
将本次考试的所有验证问题和解释集中在一处,节省数小时的准备时间。1,000+ 认证 · 20+ 语言 · 免费开始。
更快通过考试 → 无需银行卡