Есть ли преимущества в производительности при использовании 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.