Есть ли преимущества в производительности при использовании bulk_update по сравнению с просто update в django для обновления одного и того же значения?

У меня есть следующий кусок кода

Subscription.objects.filter(id__in=[subscription.id for subscription in subscriptions]).update(renewal_notification_sent=True)

но мне интересно, если что-то вроде

updatable_subscriptions = []
subs = Subscription.objects.filter(id__in=[subscription.id for subscription in subscriptions])
for sub in subs:
    sub.renewal_notification_sent = True

updatable_subscriptions.append(
    subs
)

# then
Subscription.objects.bulk_update(updatable_subscriptions, ["renewal_notification_sent"])

будет ли иметь какое-либо преимущество в производительности. Делает ли вызов filter с последующим update 2 запроса к базе данных?

filter, а затем update делают 2 запроса. Что касается производительности, bulk_update делает sql обновление с case, в то время как update делает простое обновление за сценой, для больших обновлений лучше использовать bulk_update.

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