NDB成员资格查询("IN"操作)性能是否会因许多可能的值而降低?

Pas*_*que 5 google-app-engine app-engine-ndb google-cloud-datastore

文档IN查询操作规定,这些查询被作为一个大的逻辑或运算平等查询实现:

qry = Article.query(Article.tags.IN(['python', 'ruby', 'php']))
Run Code Online (Sandbox Code Playgroud)

相当于:

qry = Article.query(ndb.OR(Article.tags == 'python',
                           Article.tags == 'ruby',
                           Article.tags == 'php'))
Run Code Online (Sandbox Code Playgroud)

我目前正在为GAE项目建模一些实体,并计划使用具有许多可能值的这些成员资格查询:

qry = Player.query(Player.facebook_id.IN(list_of_facebook_ids))
Run Code Online (Sandbox Code Playgroud)

哪里list_of_facebook_ids可能有数千件物品.

这种类型的查询是否能够很好地处理列表中数千个可能的值?如果没有,建议的方法是什么?

Gui*_*sum 8

这不适用于成千上万的值(事实上我敢打赌,它开始降级超过10个值).我能想到的唯一选择是某种形式的预计算.您必须更改架构.