У меня есть таблица tmp_drop_ids
с одним столбцом, id
и 3,3 миллиона записей. Я хочу перебрать таблицу, что-то делать с каждыми 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 с для генерации таблицы tmp), но иногда оно будет замедляться, например, около 300 тыс. билетов на создание этой таблицы tmp потребовалось 11-12 секунд, и снова около 400 тыс. Это в основном кажется ненадежным.
Я буду использовать эти идентификаторы в других запросах, поэтому я решил, что лучшее место для их размещения - в таблице tmp. Есть ли лучший способ перебрать результаты, как этот?