Sorry, let me rephrase to avoid confusion. The original query I showed took about 4 seconds in total.
The modified query underneath took around 0.2s in total. Cal On Wed, Jul 13, 2011 at 11:08 PM, Cal Leeming [Simplicity Media Ltd] < cal.leem...@simplicitymedialtd.co.uk> wrote: > The first query took around 4 seconds, the latter took around 0.2s. :) > On 13 Jul 2011 21:15, "Andre Terra" <andrete...@gmail.com> wrote: > > On Wed, Jul 13, 2011 at 4:37 PM, Cal Leeming [Simplicity Media Ltd] < > > cal.leem...@simplicitymedialtd.co.uk> wrote: > > > > (...) > > > > > >> ** > >> *This original query took 4 seconds to complete:* > >> > >> # return sessions for all subscriptions under this username > >> _users = Members.objects.filter( > >> username = 'testuser' > >> ) > >> return Session.objects.filter( > >> member__in = _users, > >> is_fake = 0 > >> ).order_by("-id") > >> > >> *SELECT* *COUNT*(*) *FROM* `ddcms_session` *WHERE* > (`ddcms_session`.`is_fake` > >> = 0 *AND* `ddcms_session`.`member_id` *IN* (*SELECT* U0.`memberid`< > http://dev.cp.dukedollars.com/paytools/lookingglass/120186270#> > >> *FROM* `members` U0 *WHERE*U0.`username` = testuser )) > > >> > >> ID SELECT_TYPE TABLE TYPE POSSIBLE_KEYS KEY KEY_LEN REF ROWS EXTRA > >> 1 PRIMARY ddcms_session index None member_id 281 None 397790 Using > where; > >> Using index > >> 2 DEPENDENT SUBQUERY U0 unique_subquery PRIMARY,username PRIMARY 8 func > 1 Using > >> where > >> > >> > > > >> *To speed this up, I had to change it to the following:* > >> > >> _users = map(lambda x: x.get('memberid'), Members.objects.filter( > >> username = self.username > >> ).values('memberid')) > >> > > > > # return sessions for all subscriptions under this username > >> return Session.objects.filter( > >> member__memberid__in = _users > >> is_fake = 0 > >> ).order_by("-id") > >> *SELECT* *COUNT*(*)< > http://dev.cp.dukedollars.com/paytools/lookingglass/120186270#> > >> *FROM* `ddcms_session` *WHERE* (`ddcms_session`.`is_fake` = 0 *AND* > > >> `ddcms_session`.`member_id` *IN* (120186270, 120235430, 120235431)) > >> > >> > >> ID SELECT_TYPE TABLE TYPE POSSIBLE_KEYS KEY KEY_LEN REF ROWS EXTRA > >> 1 SIMPLE ddcms_session range member_id member_id 4 None 187 Using where; > >> Using index > >> > > > > So basically this means you'll write two different queries, whereas the > > former example used one query + subquery? How long did these two queries > > take combined? Less than the 4 seconds from the first code? > > > > > > Cheers, > > André > > > > -- > > 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. > > > -- 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.