Has anyone experienced an ActiveRecord query being much much slower than 
running the equivalent
query in the MySql console?

I am running a simple "group by" query with one condition on a table with 7 
million records.  When
I run EXPLAIN it says that it will have to scan over all the records - well 
that's OK.  In the MySQL
query it takes 1min 40secs which is OK for me - this is not a web app.  But 
when I run exactly
the same query in a ruby script using ActiveRecord it takes about 45 mins - 
far too long.

I am running all this on my work PC, 3 gig of memory.  Windows PerfMon says 
I have 2 gig available
and 1 gig on standyby.  I am using ruby 1.8.7; rails 3; mysql2 gem; Windows 
7 and MySql 5.5.
I have also set the INNODB buffer pool size to 480M.  

What seems to be happening is that the MySQL process uses all the memory up 
to 500M and
there is a lot of page swapping.  PerfMon shows that the disk activity is 
very high (99%). So
that explains the bottleneck.  But I still don't know why this happens when 
I run the code from
Ruby and yet from the MySQL console it is fine.

I even tried just using the MySQL2 gem directly in my ruby code using 
MySql2::Client.new,
but still very very slow.

I know this probably doesn't explain everything but I just wondered if 
anyone had a similar experience.

Thanks

William

p.s. also posed on StackOverflow. 
http://stackoverflow.com/questions/5004204/query-is-fast-in-mysql-but-slow-when-run-from-rails-activerecord

-- 
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].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to