Я использую стандартное окружение Python 2.7 Google App для своего проекта со старым хранилищем данных (не NDB).
Я столкнулся со странным поведением пользовательского индекса хранилища данных.
У меня есть модель, подобнаяthis.
class EmailHistory(db.Model):
code = db.StringProperty(required=True)
account = db.ReferenceProperty(Account)
group = db.ReferenceProperty(Group)
......
И я попытался получить объекты, используя запрос ниже.
q = EmailHistory.all().filter('account =', account).filter('code =', code).filter('group =', group)
lst = [e for e in q]
Я ожидал, что мне понадобится пользовательский индекс для этого запроса, так как я запрашиваю три свойства.(Насколько я понимаю, AppEngine создает встроенный индекс автоматически для каждого свойства, поэтому мне не нужно определять индекс для запроса одного свойства. Но если я хочу сделать запрос по нескольким свойствам, мне нужно будет определить собственный индекс)
Но когда я запускал его на локальном компьютере, он не генерировал пользовательский индекс автоматически.Более того, когда я запустил его на сервере движка Google App, у меня была возможность извлекать сущности без NeedIndexError.
У меня вопрос, когда хранилищу данных точно нужен пользовательский индекс?Я прочитал их официальную документацию, но не понял, почему мне не нужен пользовательский индекс для запроса выше.https://cloud.google.com/appengine/docs/standard/python/datastore/indexes