Elimine com eficiência objetos / tags de m2m órfãos no Django

Eu tenho dois modelos - Foto e Tag - que são conectados através de um 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 em quando, obtemos tags órfãs, que não são mais referenciadas por nenhuma foto. Existe uma maneira eficiente de excluir essas tags? Eu sei sobre esta resposta:Django: excluir entradas órfãs M2M?

E nossa solução se parece com isso no momento:

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

No entanto, com o aumento do banco de dados, o tempo de execução desse script está se tornando extremamente alto :-P Existe uma maneira eficiente de obter uma lista de todos os IDs de tag da tabela de tags e uma lista de todos os IDs de tags de muitos-para-muitos tabela para criar uma lista de intersecção?

questionAnswers(3)

yourAnswerToTheQuestion