Является ли Django bulk_update медленнее, чем update?

Я пытаюсь создать и обновить около 30k строк данных одновременно в базе данных из Django. Это занимает около 2-5 минут, потому что все эти строки имеют 90+ полей, которые также должны быть обновлены, поэтому, чтобы сократить время на эту процедуру хранения, я планировал использовать bulk_update и bulk_create в Django. Но после реализации я понял, что это занимает гораздо больше времени, чем мой старый процесс (upsert - update_or_create). Даже если убрать время, затрачиваемое на определение того, создавать или вставлять (что, как я теперь понимаю, можно сделать напрямую, используя аргумент в bulk_create), это все равно займет в 4 раза больше времени, чем мой запрос.

Исходя из названия функции, я думал, что это должно быть лучшим подходом для массового создания и обновления такого количества строк и сэкономить мне время, но я не знаю, почему это не работает. Может ли кто-нибудь объяснить, почему это происходит и есть ли способ сделать это быстрее?

Единственная причина, которую я могу придумать до сих пор, заключается в том, что у меня слишком много полей, которые должны быть обновлены в строке, т.е. кроме 4-5 полей в данных, я обновляю все остальные 90 полей в таблице. Но я не уверен, что это полностью правильно или нет.

Вернуться на верх