2

我正在使用 GAE 运行一个宠物项目。

我有一个大表(100K 行),我正在针对它运行索引查询。这似乎很好。然而,遍历结果似乎需要非线性时间。进行一些分析,似乎对于第一批行(100 左右)它是线性行为,但随后掉下悬崖并开始花费越来越多的时间来检索到达行。这是代码草图:

q = Metrics.all()
q.filter('Tag =', 'All')
q.order('-created')    
iterator = q.run(limit = 100)
l = []
for i in iterator:
    l.append[i.created]

知道什么会导致这种行为非线性吗?

4

2 回答 2

1

很可能是因为您没有使用Query Cursors,而是使用它们,您会看到性能有所提高。

此外,您似乎正在使用旧数据库,请考虑切换到NDB,因为最新的实现应该更好更快。

于 2013-10-21T06:52:53.490 回答
0

如果您知道要处理的确切数字,请考虑使用 fetch。run 将以较小的块获取您的结果(默认批量大小为 20),因此会有额外的往返操作。

OOT:重命名列表变量可能很好,它与 python 列表函数同名 :)

于 2013-10-21T07:04:32.783 回答