一个 10 PB 的 BigQuery 订单表通过 country_name 和 username(均为字符串)进行过滤;当应用过滤器时,仪表板查询速度很慢。您应该如何重新设计该表以实现更快的访问?
选择一个答案
点击一个选项来检查您的答案。
正确答案: 按 country_name 和 username 对表进行聚簇。.
为什么这是答案
当查询经常使用 countryname 和 username 进行过滤时,对这两个字段进行聚簇(clustering)是最佳方案。聚簇会根据指定列对相关数据进行物理排序,从而显著减少扫描的数据量,提高查询性能。 其他选项错误的原因是: 按 countryname 聚簇并按 username 分区:虽然分区有助于减少扫描,但对字符串类型(尤其是高基数)的 username 进行分区可能导致分区过多或过小,管理复杂且效率低下。 按 countryname 和 username 分区:对两个字符串字段进行分区会创建大量小分区,增加元数据开销,并可能导致查询性能下降。分区通常更适合日期或整数等低基数列。 按摄取时间 (PARTITIONTIME) 分区:虽然 PARTITIONTIME 分区对于时间序列数据很有效,但它与基于 countryname 和 username 的过滤条件无关,因此无法优化此类查询。
通过考试 — 无需无休止地寻找答案
将本次考试的所有验证问题和解释集中在一处,节省数小时的准备时间。1,000+ 认证 · 20+ 语言 · 免费开始。
更快通过考试 → 无需银行卡