Google bigquery 返回列中给定值的第一行-BigQuery

Google bigquery 返回列中给定值的第一行-BigQuery,google-bigquery,Google Bigquery,我有一个非常大的表,它有一个列,为每一行保存字符串类型的自定义ID。对于每个ID,该表中有50个属性。这保证在表中是唯一的 我的主要任务是获取给定ID行中的50个属性。 当我运行一个像下面这样的普通查询时,只需5秒钟就可以扫描100万行 SELECT * FROM `mytable` WHERE id='123' 据我所知,BigQuery在将行划分为不同的集群之后,会并行搜索匹配项。我相信对于给定的ID值,它将检查所有不同集群中的所有行。因此,即使在一个分区中找到匹配项,其他集群也将继续获得

我有一个非常大的表,它有一个列,为每一行保存字符串类型的自定义ID。对于每个ID,该表中有50个属性。这保证在表中是唯一的

我的主要任务是获取给定ID行中的50个属性。 当我运行一个像下面这样的普通查询时,只需5秒钟就可以扫描100万行

SELECT * FROM `mytable` WHERE id='123'
据我所知,BigQuery在将行划分为不同的集群之后,会并行搜索匹配项。我相信对于给定的ID值,它将检查所有不同集群中的所有行。因此,即使在一个分区中找到匹配项,其他集群也将继续获得其他匹配项

但是,由于ID列中的值在这里是唯一的,我们可以在集群中找到匹配项并返回行后,以某种方式“中断”其他集群上运行的作业

我希望这将加快查询运行时间。 此外,在未来,这个表将增长到非常大,所以如果可以做到这一点,它将真正有助于我的目的


欢迎提出任何建议。

您可以使用最近介绍的
这将允许您降低成本并提高性能

请注意:目前,集群仅支持分区表,但对的支持正在开发中

如果您的表已分区,则只需按id对其进行集群即可,这样就完成了
如果没有-您可以引入“假”日期字段并按它进行分区,以便该表可以使用集群

同时,如果您只对给定id的一行感兴趣,请尝试下面的方法

SELECT * FROM mytable WHERE id='123' LIMIT 1

您可以使用最近介绍的
这将允许您降低成本并提高性能

请注意:目前,集群仅支持分区表,但对的支持正在开发中

如果您的表已分区,则只需按id对其进行集群即可,这样就完成了
如果没有-您可以引入“假”日期字段并按它进行分区,以便该表可以使用集群

同时,如果您只对给定id的一行感兴趣,请尝试下面的方法

SELECT * FROM mytable WHERE id='123' LIMIT 1

谢谢你,米哈伊尔。我会深入研究的。不幸的是,
SELECT*FROM mytable,其中id='123'LIMIT 1
在这种情况下没有任何改进。是的。使用集群表将查询时间缩短到2秒,数据处理仅为几个字节,而之前的查询时间为230MB。而且我相信即使桌子越来越大,它的性能也应该差不多。谢谢米哈伊尔的创意。我会深入研究的。不幸的是,
SELECT*FROM mytable,其中id='123'LIMIT 1
在这种情况下没有任何改进。是的。使用集群表将查询时间缩短到2秒,数据处理仅为几个字节,而之前的查询时间为230MB。我相信即使在表大小增加时,它也应该提供几乎相同的性能。