我正在使用GAE来运行一个宠物项目。
我有一个很大的表(100K行),我正在对其运行索引查询。这看起来很好。然而,迭代遍历结果似乎需要非线性时间。在做一些分析时,对于第一批行(大约100行),它似乎是线性运行的,但随后就掉了下来,开始花费越来越多的时间来检索reach row。以下是代码草图:
q = Metrics.all()
q.filter('Tag =', 'All')
q.order('-created')
iterator = q.run(limit = 100)
l = []
for i in iterator:
l.append[i.created]
你知道是什么原因导致这种行为是非线性的吗?
发布于 2013-10-21 14:52:53
很可能是因为您没有使用Query Cursors,所以使用它们,您将看到您的性能有所提高。
而且,看起来您正在使用旧的DB,考虑切换到NDB,因为最新的实现应该更好、更快。
发布于 2013-10-21 15:04:33
如果您知道要处理的确切数字,请考虑使用fetch。run将在较小的块中获取结果(默认批处理大小为20),将有额外的往返操作。
OOT:也许重命名列表变量很好,它与python列表函数同名:)
https://stackoverflow.com/questions/19487429
复制相似问题