我尝试通过执行以下命令一次删除超过20,000,000个对象:
MyModel.objects.filter(some_field__lt=100).delete()
但我不能,因为内存不足(1GB VPS)。是不好的方法还是什么?怎么做?
答案 0 :(得分:4)
在这种情况下,我认为最好使用原始SQL查询https://docs.djangoproject.com/en/dev/topics/db/sql/#executing-custom-sql-directly
cursor.execute("DELETE FROM mymodel WHERE some_field < %s", [value])
答案 1 :(得分:2)
尝试限制所选内容MyModel.objects.filter(some_field__lt=100).only('id').delete()
或者如果需要,获取查询并在django之外执行查询
MyModel.objects.filter(some_field__lt=100).query