首页 > 解决方案 > 谷歌数据存储投影查询是否可以获取实体中的所有数据?

问题描述

根据这个文档在这里

如果我将投影查询与实体中的所有属性一起使用。它将花费我 1 个实体来读取查询和小操作来获取结果。

是否比我使用仅键查询获取所有键然后使用get(key)获取实体数据更好?这将花费我为查询读取 1 次实体,为实体数据读取 N 次实体。

谢谢你。

标签: google-cloud-datastore

解决方案


请注意,虽然投影将导致单个读取操作,但您需要让所有要投影的字段都出现在索引中。额外的索引具有存储成本,并且还可能增加写入延迟。因此,如果您只投影几个小尺寸的字段,那么您可以创建这样一个复合索引并进行投影,它只需要一次操作。

如果不能选择带有投影的复合索引,那么您仍然可以尝试通过索引尽可能多地解析 where 子句,此时获取所有实体的单个查询将只花费 N 并且(不是 1+N您首先获取密钥然后获取实体的位置)。


推荐阅读