Настройка:
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 - это смехотворно длинный список идентификаторов. Поскольку я удаляю большое количество капель, это делает меня и БД очень недовольными.
Есть ли причина для этого? Я не понимаю, почему ORM не может преобразовать приведенный выше фрагмент в один запрос DELETE. Есть ли способ оптимизировать это, не прибегая к необработанному SQL?