BigQuery 上的索引 Table

Indexes on BigQuery Table

我有一个用例,其中我们在 BigQuery 中有几个 table。 现在我想在 BigQuery table 的其中一列上实现索引。 但是我没有找到足够的文档来做到这一点。我发现一些博客和 posts 提到 BigQuery 不支持索引。 请帮我找到一个博客或 post 可以帮助我在 BigQuery 上实现索引。提前致谢。

2019 年更新:查看 clusters improve your querying times and data scanned:


如评论中所述,此问题与 "how would BigQuery deal with my data if it was a 100 times larger" 相关。在处理传统数据库时,索引是正确的解决方案,但 BigQuery 不同:随着数据量的增长,BigQuery 会添加更多服务器 - 保持性能几乎不变。

换句话说,随着数据的增长,您应该预计成本会线性增加,而性能几乎保持不变。不需要索引。这也是人们选择 BigQuery 来处理其分析工作负载的重要原因之一。

(当然,这完全取决于您的具体用例,请测试这些断言并反馈!)

BigQuery 中 "index" 的收盘价是 Partitioned Tables。目前它只支持按日期分区。

A partitioned table is a special table that is divided into segments, called partitions, that make it easier to manage and query your data. By dividing a large table into smaller partitions, you can improve query performance and reduce the number of bytes that are billed by restricting the amount of data that is scanned. BigQuery offers date-partitioned tables, which means that the table is divided into a separate partition for each date.

您可以在 bigquery table 中使用高级选项中提供的集群顺序参数创建索引,而创建 table.This 集群选项仅适用于分区 table。 请按照以下 link 了解更多详细信息: link to google documentation

除了分区之外,还可以使用多个表,例如每个表都有一天的数据量。 BigQuery 一次最多可以查询 1000 个表,所以这应该涵盖大多数情况,让我们保持成本不变。

BigQuery 现在支持创建搜索索引和 SEARCH 函数。这使我们能够使用 Google 标准 SQL 在非结构化文本和 semi-structured 数据中高效地查找数据元素。

https://cloud.google.com/bigquery/docs/search-intro