设置:
Django 1.1.2,MySQL 5.1
问题:
Blob.objects.filter(foo = foo) \
.filter(status = Blob.PLEASE_DELETE) \
.delete()
此代码段导致ORM首先生成
SELECT * from xxx_blob where ...
查询,然后执行DELETE from xxx_blob where id in (BLAH);
,其中BLAH是ID的荒谬列表。由于我要删除大量的Blob,这使我和DB都非常不高兴。是否有一个原因?我不明白为什么ORM无法将上面的代码片段转换为单个DELETE查询。有没有一种方法可以优化此方法而不求助于原始SQL?
最佳答案
并非没有编写自己的自定义SQL或管理器之类的东西;他们显然正在努力。
http://code.djangoproject.com/ticket/9519
关于python - 如何提高Django QuerySet批量delete()的效率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4867852/