Hello everyone,

maybe someone can help me to speed up a quite slow query:

I've got two models (only the important stuff outlined here): Events and
EventDates

class Event(models.Model):
>     status = models.SmallIntegerField(verbose_name=_(u"status"),
>         choices=STATUS_CHOICES, default=STATUS_ONLINE, db_index=True)
>

>     online = EventOnlineManager()
>


class EventDate(models.Model):
>     event = models.ForeignKey(Event)
>
>     date = models.DateField(verbose_name=_(u"start date"), db_index=True)
>


Events have an EventOnlineManager with a "to_expire" method which should
select all Events with status=online and EventDates associated which date <
today.

class EventOnlineManager(models.Manager):
>
>     def get_query_set(self):
>         return (super(EventOnlineManager, self).get_query_set()
>                     .filter(status=Event.STATUS_ONLINE))
>
>     @property
>     def to_expire(self):
>         today = datetime.date.today()
>         return (self.annotate(eventdate_max=models.Max('eventdate__date'))
>                     .filter(eventdate_max__lt=today))
>

Now this query takes about 15 seconds to run on a database with about 5,000
Events and 50,000 EventDates.
I'm running Django 1.3 (trunk) and PostgreSQL 9.0 on a relatively recent
quadcore machine.

Is there any way to do a more efficient query?

Thanks in advance!
Regards, Fabian

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to