python - Google-app-engine NDB iter keys_only

标签 python google-app-engine app-engine-ndb

假设我有一个将经常执行的查询,很可能会产生相同的结果。

是否正确使用:

for key in qry.iter(keys_only=True):
    item = key.get()
    #do something with item

性能优于:

for item in qry:
    #do something with item

因为在第一个示例中,查询将只加载键,随后调用 key.get() 将利用 NDB 的缓存机制,而示例 2 将始终从店铺?还是我误解了什么?

最佳答案

我怀疑第二种形式的性能会更好——缓存中的值总是有可能的,然后,假设你得到了不止一个实体,你' d 进行多次往返。很快就会变慢。

更好的方法确实是 http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=118 中显示的方法-- 使用 ndb.multi_get(q.fetch(keys_only=True))。但如果缓存命中率太低,情况会更糟;这在问题中进行了广泛讨论。

关于python - Google-app-engine NDB iter keys_only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9965204/

相关文章:

google-app-engine - Google 应用引擎中的新全文搜索是 Multi-Tenancy 的吗?

python - 谷歌应用引擎 : Task queue performance

python - pip 可以列出它的二元轮吗?

python - 使用 django rest 框架教程时出现 TypeError

google-app-engine - 我可以从桌面应用程序使用 GAE Cloud Endpoints 吗?

javascript - 希望 python 返回到 javascript 的数据可以在 html div 中访问

python - ndb 事务中访问的最大实体组数的定义?

python - 如何正确处理提供的错误 urlsafe key ?

python - python中表格中的适当间距

python - 分析和改进 Django 的 ORM (SORT) 生成的查询的性能