Elimine eficientemente objetos / etiquetas m2m huérfanos en Django

Tengo dos modelos, foto y etiqueta, que se conectan a través de ManyToManyField.

class Photo(models.Model):
    tags = models.ManyToManyField(Tag)

class Tag(models.Model):
    lang = models.CharField(max_length=2)
    name_es = models.CharField(max_length=40)
    name_en = models.CharField(max_length=40)

De vez en cuando, obtenemos etiquetas huérfanas, a las que ya no se hace referencia en ninguna foto. ¿Hay una manera eficiente de eliminar esas etiquetas? Sé de esta respuesta:Django: ¿eliminar las entradas huérfanas M2M?

Y nuestra solución se ve así en este momento:

for tag in Tag.objects.all():
    if not tag.photo_set.select_related(): tag.delete()

Sin embargo, a medida que aumenta la base de datos, el tiempo de ejecución de este script es cada vez más alto :-P ¿Existe una manera eficiente de obtener una lista de todos los identificadores de etiquetas de la tabla de etiquetas y luego una lista de todas las identificaciones de etiquetas tabla para crear una lista de intersecciones?

Respuestas a la pregunta(3)

Su respuesta a la pregunta