2

我试图通过执行一次删除超过 20,000,000 个对象:

MyModel.objects.filter(some_field__lt=100).delete()

但我不能,因为没有足够的内存(1GB VPS)。这是不好的方法还是什么?怎么做?

4

2 回答 2

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])
于 2013-01-09T10:05:16.330 回答
2

尝试限制正在选择的内容MyModel.objects.filter(some_field__lt=100).only('id').delete()

或者如果需要获取查询并在 django 之外执行查询 MyModel.objects.filter(some_field__lt=100).query

于 2013-01-09T08:43:51.697 回答