Configuración:
Django 1.1.2, MySQL 5.1¿Cómo hacer Django QuerySet mayor delete() más eficiente
Problema:
Blob.objects.filter(foo = foo) \
.filter(status = Blob.PLEASE_DELETE) \
.delete()
resultados este fragmento en el ORM generar primero una consulta SELECT * from xxx_blob where ...
, luego haciendo un DELETE from xxx_blob where id in (BLAH);
donde BLAH es una lista ridículamente larga de id's. Como estoy eliminando una gran cantidad de blobs, esto hace que tanto yo como DB estén muy descontentos.
¿Hay alguna razón para esto? No veo por qué el ORM no puede convertir el fragmento de arriba en una sola consulta DELETE. ¿Hay alguna forma de optimizar esto sin recurrir a SQL sin formato?
Esto es realmente desafortunado. Gracias por indicarme el boleto. – svintus
El boleto brinda la razón por la que estabas buscando. No es del todo sin mérito. –