ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michal Malecki" <misie...@poczta.onet.pl>
Subject Re: What is N+1
Date Wed, 09 Feb 2005 12:24:37 GMT
That's question which I am asking to myself for some time now. I am afraid
that it is strongly dependant on the case (db engine, size of parent and
child, how many children has parent). Using n+1 killer (groupby in ibatis)
is much cleaner in Java code, co I think it's better, unless developing some
mission critical application.
Michal Malecki
ps one question - do we need to have sorted result by the grouped by column?

> Ok, the flip-side of this approach is that you increase the size of the
> returned result by N*(size of the lookup).
>
> So if the lookup is 10 bytes and you are fetching 10 records of the
> child, your payload size is 100 bytes
> instead of 10 bytes.   ( I wonder if JDBC makes some internal
> optimisations - keeps a pointer or something
> to same record if duplicates exist?)
>
> That's not a problem per se, but which one is better:
>
> 1.  This approach or ...
> 2.  Using an "in clause" and making another round-trip?
>
> Cheers
>
> Abdullah
>
>
> Michal Malecki wrote:
>
> >Well, I think you need only simple join in your sql, no extra features of
> >ibatis needed:
> >select * from CHILD, PARENT where parent_id=PARENT.id;
> >am I right?
> >Michal Malecki
> >
> >
> >
> >>What about relationships from the child up to the parent?  Are they also
> >>classified as N+1?
> >>
> >>Suppose we have child table with a fk of parent_id.
> >>
> >>if I do:
> >>
> >>  SELECT * from CHILD
> >>
> >>I'll get a column with parent_id with values.
> >>
> >>Now suppose I also want details pertaining to the parent_id along with
> >>the recordset of Child, I need not
> >>do 10 separate selects for the parent ...  is this also an N+1 problem?
> >>
> >>What is the preferred iBatis model for this?
> >>
> >>Cheers
> >>
> >>Abdullah
> >>
> >>
> >>Kris Jenkins wrote:
> >>
> >>
> >>
> >>>friendVU admin wrote:
> >>>
> >>>
> >>>
> >>>>What is n+1?
> >>>>.V
> >>>>
> >>>>
> >>>
> >>>n++!   :-P
> >>>
> >>>It's when each child object in a complex query has to be selected
> >>>seperately.  If 'parent' has 10 'children', you end up with 10+1
> >>>select statements being issued.  See the developer's guide under
> >>>'Avoiding N+1 selects' for the full lowdown.  Version 2.0.9 comes with
> >>>new groupBy goodness to banish the N+1 problem.
> >>>
> >>>Kris
> >>>
> >>>
> >>>
> >
> >
> >
> >
> >
>



Mime
View raw message