Problem is that it has to do the rand first, then the limit afterwards. I just tried this on a table with around 4 million records: select * from galleries order by rand() limit 10;
I stopped it after 3 minutes. This took .001 seconds on the same table: select * from galleries order by id limit 10; On an unindexed field, it took 3.5 seconds: select * from galleries order by thumb_exists limit 10; Order by rand() really sucks. We try not to use it at all. - Ericson Smith http://www.funadvice.com On Wed, Feb 20, 2008 at 7:30 PM, Anthony Richardson < [EMAIL PROTECTED]> wrote: > > But the rand() would need to be performed on the entire dataset before > the limit is applied otherwise it wouldn't be random! > > Anthony > > On 2/21/08, Raul <[EMAIL PROTECTED]> wrote: > > > > @Anthony - Good catch. I forgot about that. > > > > But with the LIMIT of 50 it shouldn't be that big of a deal. Maybe the > > generated SQL is not what we think it is? I guess you could also try > > replacing this with a find_by_sql statement and see if it performs any > > better. > > > > @records = Record.find_by_sql(SELECT * FROM records WHERE active=1 ORDER > BY > > rand() LIMIT 50") > > > > Raul > > > > > > ----- Original Message ----- > > From: "Anthony Richardson" <[EMAIL PROTECTED]> > > To: <rubyonrails-deployment@googlegroups.com> > > Sent: Wednesday, February 20, 2008 3:32 PM > > Subject: [Rails-deploy] Re: A lot of records running slow on Dreamhost - > any > > suggestions > > > > > > > > > > On 2/21/08, Lee Munroe <[EMAIL PROTECTED]> wrote: > > >> @records = Record.find_all_by_active(true, :order => 'rand()', > > >> :limit => 50) > > > > > > you might want to double check, but I recall something about the > > > rand() function of mySQL being a slow pig. What is the performance > > > like without the rand() > > > > > > > > > > > > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Deploying Rails" group. To post to this group, send email to rubyonrails-deployment@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-deployment?hl=en -~----------~----~----~----~------~----~------~--~---