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
Yikes! I'm not thinking straight this morning. Sorry!
The N+1 selects problem is when you query for n parents, and you need one extra query for the children. Internally, this happens:
List parents = sqlMap.queryForList( "getParents", parameter ); for ( Iterator i = parents.iterator(); i.hasNext(); ) { Parent p = (Parent) i.next(); List children = sqlMap.queryForList( "getChild", p.getId() ); p.setChildren( children ); }
So you end up with 1 query for the parent list, plus one extra for each parent to get the children = n + 1. Rather inefficient.
This is the problem that 2.0.9 fixes.
Sorry for the confusion. Kris
-- Kris Jenkins Email: [EMAIL PROTECTED] Blog: http://cafe.jenkster.com/ Wiki: http://wiki.jenkster.com/