Django: Требуется время для order_by() и count()

Следующий объект модели имеет около 300k строк в postgres, и я установил db_index=True для поля published_at. По какой-то причине order_by() занимает много времени. (+100 мс или около того)

Кроме того, .count() занимает много времени. (около 150 мс). Почему они выполняются так долго, хотя индекс указан?

class Video(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title = models.CharField(max_length=300)
    thumbnail_url = models.URLField(max_length=1000)
    preview_url = models.URLField(max_length=1000, blank=True, null=True)
    embed_url = models.URLField(max_length=1000)
    embed_source = models.ForeignKey(EmbedSource, on_delete=models.CASCADE)
    duration = models.CharField(max_length=8)
    tags = models.ManyToManyField(Tag, blank=True, db_index=True)
    views = models.PositiveIntegerField(default=0, db_index=True)
    is_public = models.BooleanField(default=True)
    published_at = models.DateTimeField(default=timezone.now, db_index=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ["-published_at"]

    def __str__(self):
        return self.title
Вернуться на верх