В одном проекте использую SQLAlchemy для работы с БД. Глубоко в документацию не вникал, пробежался по верхам.
Возник вопрос со скоростью работы. Задача довольно проста - пробежаться по элементам питоновского list, найти соответсвующую ему строку в таблице - поменять в ней пару значений. Делаю примерно так (пробовал разные вариации):
for keyword in keys_list:
result = s.query(MyTable).filter(MyTable.keyword == keyword).update({'a':a, 'b':b})
Мне представляется что время выполнения такого кода должно возрастать линейно с увеличением размера keys_list, однако судя по всему - это не так.
На тестовом сервере одна из таблиц БД небольшая, порядка 3000 строк. SQLAlchemy обрабатывает данные из нее с приемлемой скоростью хотя и не моментально, за несколько секунд. На продакшене же, количество строк около 300000, то есть, всего лишь в 100 раз больше. Я предполагал, что и скрипт будет работать в сто раз дольше, и это бы меня устроило. Однако время работы скрипта возросло как минимум в геометрической прогрессии, а может даже и еще на несколько порядков. Скорее всего, я что-то не понимаю или делаю не так - таблица-то не невероятно огромная.
Прошу помощи, как с этим справиться. Думаю, проще всего написать raw sql, но пока не хочу принципиально.