我用Python GAE做这样的查询:
a1 = Activity.query().filter(Activity.first=='foo').order(-Activity.date)
a2 = Activity.query().filter(Activity.second=='bar').order(-Activity.date)
两个单独的索引是否更好:
indexes:
- kind: Activity
properties:
- name: first
- name: date
direction: desc
- kind: Activity
properties:
- name: second
- name: date
direction: desc
或者用一个索引同时覆盖两者:
indexes:
- kind: Activity
properties:
- name: first
- name: second
- name: date
direction: desc
我怀疑前者更好,但我想检查一下。
= = = = =
对于投票决定关闭为"基于意见"的人来说,上述两个选项将改变索引大小,可能还会改变响应查询的速度。绝对不是基于意见。有一个正确答案。
第一个选项将为您提供一个直接回答您的查询的索引,因此它将更好地扩展,但确实有更高的写入成本(2个索引条目,而不是1个)。
第二个查询将写出更少的索引条目(1),但是两个查询都需要跳过任何索引条目。此外,不需要该服务允许使用所提供的索引执行第二个查询。我的测试显示,第二个查询当前被拒绝,索引与第二个查询类似。