A backwards N+1 problem

R

Richard Schneeman

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, :eek:rder => '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], :eek:rder
=> 'word ASC', :per_page => 5)
end ## if @phrase !=nil
end ##def index


The full capture can be found under my <a href
="https://tuneup.fiveruns.com/runs/699"> Five Runs Account </a>

If you have any suggestions i would love for my main page to not take
5000 milliseconds to load : )
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top