From: Richard Schneeman Date: 2008-10-28T02:47:51+09:00 Subject: A backwards N+1 problem Hey, i’m running into an N+1 problem, but i don't exactly know how to :include in this situation. (controller code is at the bottom). I'm trying to find all of the highest ranked definitions, and then render their associated phrases. A Phrase has many definitions. A Definition has many children I already have all the info i need stored in @definitions, so this should only require one SQL call, but unfortunately this line: @Phrases << definition.phrase(:include => [:definitions => :children]) Doesn’t actually work. Below is my controller code. Rails 2.1.0, Ruby 1.8.6…Thanks ahead of time def index @definitions = Definition.find(:all, :include => [:children, :phrase], :limit => 10, :order => 'rank DESC') @Phrases = [] for definition in @definitions @Phrases << definition.phrase(:include => [:definitions => :children]) end @Phrases = @Phrases.uniq if @Phrases != nil @new_phrases = @Phrases.paginate(:page => params[:page], :order => 'word ASC', :per_page => 5) end ## if @phrase !=nil end ##def index The full capture can be found under my Five Runs Account If you have any suggestions i would love for my main page to not take 5000 milliseconds to load : ) -- Posted via http://www.ruby-forum.com/.