设置:
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不能将上面的代码片断转换为一个删除查询.有没有一种方法可以在不求助于原始SQL的情况下对此进行优化?