Re: ForeignKey efficiency question

2010-01-07 Thread apramanik
Thanks!

On Jan 7, 2:19 am, Daniel Roseman  wrote:
> On Jan 7, 5:07 am, apramanik  wrote:
>
>
>
> > Oops not a join, but still a db hit :).
>
> > On Jan 6, 9:03 pm, apramanik  wrote:
>
> > > Hey all, if I have a foreign key on a model (say Model B has a foreign
> > > key to Model A) and I do something like this:
>
> > > a = A.objects.get( pk = 1 )
> > > b = B.objects.get( pk = 1 )
>
> > > if b.a == a :
> > >     # Do something
>
> > > Is that inefficient, since its doing a join to pull b.a? Should I be
> > > comparing their ids? How do I get that from the b model? Something
> > > like this:
>
> > > if b.a_id == a.id :
> > >    # Do something
>
> > > Not sure about the syntax. Thanks!
>
> If you had done
>     b = B.objects.select_related().get(pk=1)
> that would have done a join, so you would incur some penalty there but
> you wouldn't get a separate db hit when you do b.a.
>
> However, your alternative syntax is correct, and as long as you don't
> need to access anything else on b.a it will save you the extra cost.
> --
> DR.
-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@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.




Re: ForeignKey efficiency question

2010-01-07 Thread Daniel Roseman
On Jan 7, 5:07 am, apramanik  wrote:
> Oops not a join, but still a db hit :).
>
> On Jan 6, 9:03 pm, apramanik  wrote:
>
> > Hey all, if I have a foreign key on a model (say Model B has a foreign
> > key to Model A) and I do something like this:
>
> > a = A.objects.get( pk = 1 )
> > b = B.objects.get( pk = 1 )
>
> > if b.a == a :
> >     # Do something
>
> > Is that inefficient, since its doing a join to pull b.a? Should I be
> > comparing their ids? How do I get that from the b model? Something
> > like this:
>
> > if b.a_id == a.id :
> >    # Do something
>
> > Not sure about the syntax. Thanks!


If you had done
b = B.objects.select_related().get(pk=1)
that would have done a join, so you would incur some penalty there but
you wouldn't get a separate db hit when you do b.a.

However, your alternative syntax is correct, and as long as you don't
need to access anything else on b.a it will save you the extra cost.
--
DR.
-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@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.




Re: ForeignKey efficiency question

2010-01-06 Thread apramanik
Oops not a join, but still a db hit :).

On Jan 6, 9:03 pm, apramanik  wrote:
> Hey all, if I have a foreign key on a model (say Model B has a foreign
> key to Model A) and I do something like this:
>
> a = A.objects.get( pk = 1 )
> b = B.objects.get( pk = 1 )
>
> if b.a == a :
>     # Do something
>
> Is that inefficient, since its doing a join to pull b.a? Should I be
> comparing their ids? How do I get that from the b model? Something
> like this:
>
> if b.a_id == a.id :
>    # Do something
>
> Not sure about the syntax. Thanks!
-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@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.




ForeignKey efficiency question

2010-01-06 Thread apramanik
Hey all, if I have a foreign key on a model (say Model B has a foreign
key to Model A) and I do something like this:

a = A.objects.get( pk = 1 )
b = B.objects.get( pk = 1 )

if b.a == a :
# Do something

Is that inefficient, since its doing a join to pull b.a? Should I be
comparing their ids? How do I get that from the b model? Something
like this:

if b.a_id == a.id :
   # Do something

Not sure about the syntax. Thanks!
-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@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.