我正在使用 Google-Appengine-NDB。我试图从数据库中获取不同的值,但它不起作用。
现在我的代码是: query_set = cls.query().order(cls.ls) # 获取有序查询。 set_of_field = set([data.field for data in query_set]) # 并使用这个循环来区分。`
但是循环花费的时间太长(超过 12 秒)。请帮助我,我怎样才能加快速度,或者如何从 ndb 获得不同的值?
我正在使用 Google-Appengine-NDB。我试图从数据库中获取不同的值,但它不起作用。
现在我的代码是: query_set = cls.query().order(cls.ls) # 获取有序查询。 set_of_field = set([data.field for data in query_set]) # 并使用这个循环来区分。`
但是循环花费的时间太长(超过 12 秒)。请帮助我,我怎样才能加快速度,或者如何从 ndb 获得不同的值?
尝试不同的查询,如果您的字段已编入索引,则可以使用: https ://developers.google.com/appengine/docs/python/ndb/queries#projection
query_set = cls.query(projection=["field"], distinct=True)
set_of_field = [data.field for data in query_set]
但是,如果您有一个庞大的列表,您可以在任务队列中执行此操作并将结果存储在某个地方,或者只是将不同的数据保存在另一个模型中。