设置:
Django的1.1.2中,MySQL 5.1如何使Django的查询集批量删除()更有效
问题:
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列表。由于我删除了大量的斑点,这使得我和DB都非常不高兴。
这是有原因吗?我不明白为什么ORM无法将上述片段转换为单个DELETE查询。有没有一种方法来优化,而不诉诸原始SQL?
这确实是不幸的。感谢您指点我的票。 – svintus 2011-02-06 18:48:11
门票给出了你想要的理由。这并不完全没有好处。 – 2013-03-11 20:07:56