【发布时间】:2015-10-26 10:30:54
【问题描述】:
我正在尝试使用 python 数据存储 api 在谷歌应用引擎上的应用中实现分页。我的要求是使用无限列表显示用户数据。我当前的实现是使用带有类似这样的光标:
//retrieve current_cursor
all_data = my_data.all().order('-created')
data = all_data.fetch(limit=10, start_cursor=current_cursor)
current_cursor = all_data.cursor()
//save current_cursor
据我了解,cursor 在查询的 result_set 上起作用,这样可以节省后续查询(但不是第一个)的时间,对吗?
我担心的是,如果我们有大量数据,第一次查询仍然会太慢。为了使第一次查询更快,我的想法是,我将查询分成多个较小的查询,而不是查询所有数据,例如使用('created >', certain_date) 设置过滤器并使用游标在每个集合中获取结果。
但是,缺点是我必须自己维护certain_date,如果不明智地选择它,可能会花费我大量的数据库读取。
所以我的问题是,我是否正确理解光标?此外,有没有更好的方法来使用谷歌数据存储来支持这个或任何一般的建议来实现这个?谢谢!
【问题讨论】:
-
this 有帮助吗?您是否真的遇到性能问题?
-
谢谢!我之前确实读过这篇文章,但仍然无法弄清楚,仍然觉得第一次查询需要更长的时间。现在看来可能是其他事情。我会回去检查我的代码。
标签: python google-app-engine cursor google-cloud-datastore