我有一個表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