Wow thanks!
That's really going fast now.
I would have never come to that idea :)

One more question:
Is this how you meant to set the instance variable or did you mean in 
another way?

    def __init__(self, *args, **kwargs):
        super(Player, self).__init__(*args, **kwargs)
        self.matches = Match.objects.select_related().filter( Q(opp1=self) 
| Q(opp2=self) )

On Friday, September 21, 2012 11:15:34 AM UTC+2, Martin J. Laubach wrote:
>
> My problem is when want to display overall player statistics I get about 
>> 1200 DB-Queries.
>> This is because for each player there will be 5 Queries due to 
>> matches_won, matches_draw, goals, matches_played functions.
>>
>
>   First easy optimisation: keep  Match.objects.select_related().filter( 
> Q(opp1=self)|Q(opp2=self)) in an instance variable and use that QuerySet 
> as base of all your calculations. Do NOT add additional filters for 
> matches_draw/matches_won/matches_played, instead iterate over the results 
> and do the calculations in Python. That way the QuerySet result will be 
> cached the first time you're iterating over it and won't result in any more 
> database accesses later on.
>
>    Cheers,
>
>         mjl
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/crAR4nXZyugJ.
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