У меня большая база данных MySQL на django, и я изо всех сил пытаюсь заставить ее работать эффективно:
models.py:
class Category(models.Model)
name = models.CharField()
class Article(models.Model)
start_date = models.DateTimeField(...)
end_date = models.DateTimeField(...)
active = models.BooleanField(...)
categories = models.ManyToManyField( Category )
Я бы хотел получить все активные категории на основе набора запросов Article. Я действительно делаю это так:
actives_articles = Articles.objects.filter(start_date__gt = datetime.datetime.today(), end_date__lt = another_date, active = True)
actives_categories = Category.objects.filter(article__in = actives_articles).distinct().order_by('name')
actives_articles
возвращает около 50 тыс. Результатов, так что это вообще не эффективно.
Есть идеи или указатели?
Спасибо!