Django: Граф аннотаций M2M работает медленно

Когда я запускаю Count с аннотацией от объекта, с которым связан m2m, как показано ниже. Это происходит медленно по какой-то причине.

К одной и той же таблице обращаются дважды, и второй запрос занимает много времени. Что может быть причиной этого и как я могу это исправить?

Кроме того, я хочу сделать order_by на этом count, но выполнение order_by делает скорость еще хуже.

# models.py
class Tag(models.Model):
    name = models.CharField(unique=True, max_length=100)
    is_actress = models.BooleanField(default=False)

class Video(models.Model):
    tags = models.ManyToManyField(Tag, blank=True, db_index=True)
# This is slow.
Tag.objects.annotate(count=Count("video"))

enter image description here

enter image description here

Причина, по которой такой запрос создавался и замедлялся, заключалась в том, что использовалась пагинация DRF по умолчанию, и .count() выполнялся - вот причина.

Вернуться на верх