2

使用 django.core.paginator import ObjectPaginator 时,我收到此错误:

NeedIndexError:内置索引对于此查询和您的数据不够有效。请为此查询添加复合索引。

原始查询以这种形式编写:

query = models.Cdr.all()
query.filter("var1 =", var1 )
query.filter("var2 =", var2)
query.filter("var3 =", var3)

当 ObjectPaginator 尝试计算元素的数量时出现此异常,但仅针对var1的某些值。

为什么在与其他人一起工作时,这个查询会因var1的某些值而失败?

对于这种情况,您有什么建议?

4

2 回答 2

2

建议修复NeedIndexError事件的一般程序是这个。我希望复合索引可能没有建立在您的开发上,具体取决于数据的数量和结构(可能会根据var1值而变化),但结果是需要的(为了避免出于效率原因中止查询,因为错误消息提示和尼克在此评论中确认)在实际商店中运行时。

于 2009-09-01T17:48:34.080 回答
1

我遇到了这个问题。问题不在于您的代码,而在于 GAE 的索引系统本身。要修复它,您必须在 index.yaml 文件中显式写入索引。这对我有用,但我在其他地方读到明确定义你的索引可能并不总是能解决它。无论如何,我建议您为我打开的错误加注星标

GAE 不会为只有相等过滤器的查询自动构建索引。相反,它使用谷歌称为“zigzag merge join”(谷歌)的算法。似乎该算法在某些情况下会失效。看起来谷歌团队正在努力解决这个问题,但在某些情况下它仍然会弹出。

于 2011-06-12T05:34:19.577 回答