Effizientes Löschen von verwaisten m2m-Objekten / Tags in Django

Ich habe zwei Modelle - Foto und Tag - die über ein ManyToManyField verbunden sind.

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)

Von Zeit zu Zeit erhalten wir verwaiste Tags, auf die kein Foto mehr verweist. Gibt es eine effiziente Möglichkeit, diese Tags zu löschen? Ich weiß um diese Antwort:Django: M2M-Waiseneinträge löschen?

Und unsere Lösung sieht im Moment so aus:

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

Mit zunehmender Datenbank wird die Laufzeit dieses Skripts jedoch bedrückend hoch: -P Gibt es eine effiziente Möglichkeit, eine Liste aller Tag-IDs aus der Tag-Tabelle abzurufen und anschließend eine Liste aller Tag-IDs aus den vielen zu vielen Tabelle zum Erstellen einer Schnittliste?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage