澄清具有祖先和一个属性的复合索引

时间:2018-09-09 01:58:41

标签: java google-app-engine google-cloud-platform google-cloud-datastore

对于需要使用具有一个属性的祖先查询的复合索引,我需要一些澄清。

1)当存在一个具有上升方向的属性时,我是否需要一个复合索引?

<datastore-index kind="Entity" ancestor="true" source="manual">
    <property name="Property" direction="asc"/>
</datastore-index>

2)属性何时下降?

<datastore-index kind="Entity" ancestor="true" source="manual">
    <property name="Property" direction="desc"/>
</datastore-index>

我问,因为案例(1)查询在没有复合索引的情况下有效,但是案例(2)查询不在我的测试中。不确定是否正在发生奇怪的事情。以上示例中财产的方向可能是罪魁祸首吗?

2 个答案:

答案 0 :(得分:1)

您的查询是否使用不等式过滤器(大于/小于...,等等...)?因为您将需要a composite index for any "Queries with ancestor and inequality filters"

答案 1 :(得分:0)

在这种情况下,

I 认为是必需的,因为祖先本身的规范实际上将被视为附加的属性规范,并且数据存储区的单属性默认值无法处理结果在这些情况下会进行索引:

  • 没有属性说明的祖先查询
  • 具有单一属性说明的非祖先查询

我相信,我的怀疑已通过接受以下相关答案得到证实:Objectify DatastoreNeedIndexException error on Order