Я обрабатываю 260-миллиметровую строку, ~ 1500 столбцов таблицы в виде фрагментов в модели Python. Используя коннекторы, я каждый раз собираю по 100 000 записей. Я использую LIMIT и OFFSET, чтобы перебрать таблицу. После каждого раздела я увеличиваю смещение на размер фрагмента. По мере увеличения OFFSET время выполнения запроса увеличивается до такой степени, что каждый кусок занимает у меня более 45 минут, чтобы схватиться ближе к концу. Вот макет моего запроса:
SELECT ~50_fields
FROM mytable
WHERE a_couple_conditions
ORDER BY my_primary_key
LIMIT 100000 OFFSET #########
Учитывая производительность, это особенно плохой способ запустить это. Я читал, что, возможно, смогу использовать RESULT_SCAN, чтобы ускорить его, но в документах говорилось, что мне все равно нужно будет использовать ORDER BY против него, что, как мне кажется, может победить цель. На самом деле мне все равно, в каком порядке записи попадают в мой процесс, просто я обрабатываю каждую строку ровно один раз.
Есть ли способ заставить эти запросы выполняться за приемлемое время, или я должен рассмотреть что-то вроде резкого увеличения LIMIT для каждого чанка, а затем разбить его дальше в моей программе? Какие-нибудь идеи или лучшие способы заставить Снежинку играть в мяч?