在查询多个表时,与一个大表相比,性能出乎意料。情形:
我们有一个基于BigQuery的简单网络分析工具。我们跟踪各个站点的基本事件。大约一个月,我们将所有数据汇总到一个大表中。现在,我们正在通过SITE和MONTH将数据分解为分区。
所以大表只是[events.all]
现在我们有[events.events_2014_06_SITEID]
更快地查询特定组的各个表,并处理更少的数据。但是即使是简单的查询,查询我们的整个数据集也要慢得多。我们的新数据集只有1天,而大表是30天,所以尽管查询的数据少得多,但速度较慢。
例如:
select count(et) from [events.all] where et='re'
- >在3.2s内完成,处理79mb的数据。该表有21,048,979行。
select count(et) from ( TABLE_QUERY(events, 'table_id CONTAINS "events_2014_"') ) where et='re'
- >完成44.2秒,处理1.8mb的数据。放在一起,这些表有492,264行。
为什么会发生这种情况,有没有办法解决这个巨大的差异?