Hi everyone. I've used AR for years for fairly big queries and it's the 
first time I see such an impact in my performance, so I guess I'm doing 
something wrong or missing something very obvious.
The query on PostgreSQL takes 22ms to complete, but the page is taking 21 
seconds to render. My guess is that AR is taking a lot of time to take the 
data and build objects out of it. Of course this is not my production 
machine, but my mac. Still, I would like to understand what's the problem 
here and fix it ASAP, even 8 sec to render the page on production would be 
quite a disaster....

I've tried to ask on SO, but that was the wrong question: I was misreading 
the output of EXPLAIN ANALYZE. 

This is my query:

  def self.with_facilities
    includes( :provinces => { :municipalities => :facilities } 
      ).select( "states.name, states.slug, provinces.name, provinces.slug"
      ).where( 'facilities.id IS NOT NULL' )
  end

As you can see it's a rather big join, but the biggest table has 14k 
records, so no big deal.
The point of this query, is finding all states and provinces with at least 
1 facility in the DB.
The select is completely ignored, apparently because eager loading is 
applied very late in the query execution.
The problem, I think, is that Rails instances a ton of objects from the 
data, even though I only need a bunch of fields to populate a menu...

How can I fix this? Has someone ever experienced anything like this? I 
might even try to avoind eager loading completely, but I'm not entirely 
sure how to do that.

Any help is appreciated, it's already a few days I'm trying to solve 
this... I can provide every information that is needed about the schema, 
indexes, and whatever else is needed, I just thought it wasn't important, 
the query itself is obviously performing quite well...

TIA,
  ngw

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msg/rubyonrails-talk/-/AwWQKv9L6koJ.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to