我有一个表tmp_drop_ids
与一列,id
,和330万条目。我想遍历表格,每200个条目做一些事情。我有这样的代码:postgresql:偏移+限制变得非常缓慢
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秒〜生成TMP表),但它偶尔会慢下来,例如大约30万张门票开始花费11-12秒来生成这张tmp表格,并且再次大约40万张。它基本上看起来不可靠。
我会在其他查询中使用这些ID,所以我想到了让他们在tmp表中的最佳位置。有没有更好的方法来迭代这样的结果?
你有tmp_drop_ids索引吗? CREATE UNIQUE INDEX tmp_drop_ids_id_uidx ON tmp_drop_ids(id); – filiprem
@filiprem:我是的 – Claudiu