просто скажите, что я извлек данные в виде кусков из таблицы с 20 миллионами записей, и мне нужно обработать все данные, и мне нужно удалить целые данные только после того, как все будет обработано (мое условие - я не могу удалить внутри l oop, где он выбирается)
chunk = 10000
id_gte = 1
id_lt = 20000000
delete_query = MyModel.objects.none()
for i in range(id_gte, id_lt, chunk):
data = MyModel.objects.filter(id__gte=i, id__lt=i+chunk)
print(data)
delete_query |= data
теперь, если я хочу удалить данные ... которые я получил в l oop, так что я могу сделать
delete_query.delete()
Так что я сомневаюсь.
- Влияет ли время на удаление удаляемых данных, зависит от того, сколько данных я удаляю одновременно? Как и выше, я пытаюсь удалить все 20000000 строк одновременно. Будет ли лучше удалить данные кусками? Скажем, в
delete_query
я использую al oop, чтобы получить кэшированные фрагменты набора запросов размером 10000 и удалить их? Таким образом, в целом это займет, может быть, то же время, но заблокирует дБ для меньших времен? - Проводится ли какая-либо оценка для удаления данных из базы данных? если да, то выполняется ли повторная оценка запроса для удаления данных. Я имею в виду в приведенном выше коде .... делает
delete_query.delete()
делает delete_query
для повторной оценки перед удалением данных, или он будет использовать кэш delete_query
.