У меня есть таблица 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. Есть ли лучший способ перебирать такие результаты?