теперь, когда запросы хранилища данных appengine больше не ограничены 1000, есть ли проблемы с производительностью, если использовать смещение, скажем, 250000? - PullRequest
4 голосов
/ 09 ноября 2010

Скажем, у меня есть миллион записей в модели в магазине приложений. Заплачу ли я штраф за производительность следующим запросом.

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 Ответ

3 голосов
/ 10 ноября 2010

Использование индекса почти наверняка даст вам лучшую производительность, особенно с увеличением количества объектов.

Если вы укажете смещение, хранилище данных будет сканировать более offset объектов, прежде чем приложение начнет получать результаты.Две точки маркера над той, которую вы цитируете, объясняют немного больше:

Результаты первого смещения не пропускаются самим хранилищем данных.

...