DISTINCT ON如何在GCP数据存储中工作



假设我有一种名为"audit"的类型,它有以下条目:

事件1>事件2>td style="text-align:right;">event3>td style="text-align:right;">event4
tenantId traceId eventId
tenant1 traceId1
tenant1 traceId1
tenant1 traceId2
tenant1 traceId2

是否将distinct视为聚合查询?

distinct on子句确保只返回指定属性的每个不同值组合的第一个结果。因此,它不被视为聚合查询。此外,数据存储不支持聚合查询。

基于索引的查询机制支持广泛的查询,适用于大多数应用程序。然而,它不支持其他数据库技术中常见的某些类型的查询:特别是,数据存储模式查询引擎中不支持联接和聚合查询。

您可以在本文档中阅读

distinct on是否适用于索引扫描?

是的,distinct on适用于索引扫描,并且不能将distinct on应用于任何未索引的属性。

distinct on会增加我的读取成本吗?

如果您使用的是投影查询,那么使用distinct on将增加成本,因为它将使查询超出此处提到的小操作。如果您不使用投影查询,那么它将根据实体读取进行收费。

内置索引会处理上的distinct吗?还是我们应该定义一个复合索引?

如果将distinct on应用于单个属性,即select distinct on(traceId) * from audit,则它将与实体创建过程中创建的内置索引一起使用。如果您将distinct on应用于多个属性,即select distinct on(traceId,eventId) * from audit,则它将无法与内置索引一起使用,您必须创建一个复合索引。

最新更新