既然appengine数据存储区查询不再限制为1000,那么如果要使用250000的偏移量会出现性能问题

时间:2010-11-09 20:30:56

标签: performance google-app-engine google-cloud-datastore

假设我在appengine数据库中的模型中有一百万条记录。我是否会通过以下查询支付性能损失。

records = MyModel.all().filter("words =", "foo").fetch(offset=250000, limit=20)

从它所说的appengine docs

The query has performance characteristics that correspond linearly
with the offset amount plus the limit.

或者我是否必须创建索引并执行类似

的操作
records = MyModel.all().filter("words =", "foo").filter("pub_date >", last_date).fetch(20)

我正在尝试查看是否可以在不向模型添加任何索引的情况下查询StringListProperty。

1 个答案:

答案 0 :(得分:3)

使用索引几乎肯定会为您提供更好的性能,特别是随着实体数量的增加。

如果指定偏移量,数据存储区将在应用程序开始获取结果之前扫描offset个实体。你引用的两个bullet points之上的两个{{3}}解释了一点:

  

第一个偏移结果不是   被数据存储区本身跳过。