Обычно ваша стратегия должна быть следующей.
- Напишите запрос sql, который получит необходимые данные.
- Выполнить запрос
- l oop: прочитать кортеж из результата.
- Обработать кортеж.
- Записать обработанный материал в цель отношение
Множество деталей, с которыми необходимо разобраться.
Обычно при выполнении запроса этого времени вам нужно прочитать версию базы данных. Если у вас есть одновременная запись в одни и те же данные, вы получите устаревшую версию, но вы не задержите авторов. Если вам нужна самая последняя версия, вам нужно решить сложную проблему.
При выполнении шага 4 не открывайте новое соединение, используйте его повторно. Открытие нового соединения похоже на запуск линкора.
Лучше всего, если у вас нет индексов для целевого отношения, так как вы будете платить за обновление целевого отношения каждый раз, когда пишете кортеж. Это будет работать, но будет медленнее. Вы можете построить индекс после завершения обработки.
Если эта реализация слишком медленная для вас, простой способ ускорить процесс - это обработать, скажем, 1000 кортежей одновременно и записать их в пакетном режиме. Если это слишком медленно, вы попали в темный мир настройки производительности базы данных.