我有一个名为 tmp_drop_ids
的表格,其中只有一列 id
,包含着330万条数据。我希望能遍历这个表,每次处理200条数据。我现在有以下代码:
LIMIT = 200
for offset in xrange(0, drop_count+LIMIT, LIMIT):
print "Making tmp table with ids %s to %s/%s" % (offset, offset+LIMIT, drop_count)
query = """DROP TABLE IF EXISTS tmp_cur_drop_ids; CREATE TABLE tmp_cur_drop_ids AS
SELECT id FROM tmp_drop_ids ORDER BY id OFFSET %s LIMIT %s;""" % (offset, LIMIT)
cursor.execute(query)
一开始这个程序运行得很好(生成临时表大约需要0.15秒),但是偶尔会变慢,例如在处理300k张票时,生成临时表开始需要11-12秒,在处理400k张票时也是如此。它似乎不太可靠。
我会在其他查询中使用这些id,所以我认为最好的地方就是在一个临时表中保存它们。是否有更好的方法来迭代处理结果呢?