我有一个最近开始抛出的查询:
"The built-in indices are not efficient enough for this query and your data. Please add a composite index for this query."
我检查了抛出此异常的行,问题查询就是这个:
count = self.vote_set.filter("direction =", 1).count()
这实际上是使用appengine的内置反向引用的单过滤器操作。我不知道如何优化此查询...任何人有任何建议?我试图添加这个索引:
- kind: Vote
properties:
- name: direction
direction: desc
- kind: Vote
properties:
- name: direction
我收到一条消息(显然)说这是一个不必要的索引。
提前感谢您的帮助。
答案 0 :(得分:3)
反向引用实际上只构造了一个在引用属性上过滤的查询,因此通过添加另一个过滤器,您可以进行双过滤查询。
您的compsite索引如下所示:
- kind: Vote
properties:
- name: your_reference_property_name
- name: direction
direction: desc
答案 1 :(得分:3)
如果您在本地SDK上运行所有相关查询,它应该生成所有需要的索引(在index.yaml
中),建议的策略不是自己编辑index.yaml
而是让本地SDK执行它适合你。如果SDK没有生成所有需要的索引,那么当你在本地测试中执行所有相关的代码路径时,你应该在App Engine跟踪器here中打开它的错误(在检查之后)当然不是这个问题的错误报告。