1

我有一个查询,依赖于下面的第一个索引。最近,我的应用程序的另一部分需要运行一个类似的查询;唯一的区别是它也需要过滤name属性。App Engine中的重叠索引 - 确定要合并它们吗?

原始指数:

- kind: Achievement 
    properties: 
    - name: region 
    - name: date_earned 
    direction: desc 

拟议的新查询附加索引:

- kind: Achievement 
    properties: 
    - name: name 
    - name: region 
    - name: date_earned 
    direction: desc 

鉴于原始查询与第二查询重叠(即它们都查询regiondate_earned按降序排列) ,我是否需要保留两个索引,如上所示?

还是我能够结合这两个索引,因为第一个查询与第二个查询重叠?换句话说,如果我消除第一个索引,那么只有regiondate_earned才能查询的原始查询仍然可以正常运行,而不会丢失NeedIndexError

目标是减少我拥有的索引数量。谢谢!

回答

0

对于数据存储的索引,你的情况,如果你有一个索引:

  • 类型:成就 属性:
    • 姓名:姓名
    • 名称:区域
    • 名称:date_earned direction:desc

您可以在同一个GQL查询中查询一个或多个属性(构成索引)。 因此,您可以查询一个或多个属性的任意组合:'name','region','date_earned'。

另一种确认您是否需要索引的好方法是在App Engine应用程序的数据存储区查看器中运行GQL查询。所以如果你有'name','region','date_earned'的索引,你可以运行你的GQL查询并确认你不需要单独的索引。

+0

这个答案是正确的,但在显式排序顺序的情况下,您可能需要单独的查询。 GQL技术在帮助诊断这个方面运作良好。谢谢! – 2014-10-03 17:05:43