【发布时间】:2019-05-20 05:56:25
【问题描述】:
我们有一个日期分区表,其中包含 5 年(每日增量负载)的数据,其中包含数百万条记录。为了提高性能,考虑基于非日期字段(id)拆分表,因为所有查询都将在该列(id)上包含 where 子句。并且还使用日期分区对每个拆分表进行分区,以便我们可以查询具有日期范围的较小数据集。我们不会使用通配符表,因为我们将知道 id 并计划将其附加到表中并针对该特定表运行查询。需要知道这是否是追求提高性能和降低查询成本的好选择。
[更新]:我们继续并根据 id 列(tablename_id)拆分表,并将表日期与查询中常用的 4 个其他列(最大支持)进行分区和聚集.这样,我们能够获得更好的性能,并减少每个查询访问的数据。根据测试,只要避免对表进行通配符查询,并且 Bigquery 支持基于非日期/非日期时间列的分区,它似乎是一个不错的选择。
【问题讨论】:
-
感谢@ElliottBrossard。我们已经将表与其他 4 个列聚集在一起。我们尝试了基于 id 的拆分表方法,并按日期和集群进行分区。拆分表方法减少了执行查询所花费的时间,并减少了为返回结果而处理的数据量。在 Bigquery 支持基于非日期/非日期时间列的分区之前,这似乎是一个不错的选择。
-
太好了!我看到您更新了问题,但考虑将您的发现添加为答案,以帮助人们在未来找到它。谢谢!
-
@ElliottBrossard 我添加了与答案相同的方法和统计数据。
标签: google-bigquery