I saw this workaround on the web: SELECT * FROM table WHERE RAND()>0.9 ORDER BY RAND()
Here's the site link: http://www.petefreitag.com/item/466.cfm Raul ----- Original Message ----- From: Ericson Smith To: rubyonrails-deployment@googlegroups.com Sent: Wednesday, February 20, 2008 4:36 PM Subject: [Rails-deploy] Re: A lot of records running slow on Dreamhost - any suggestions 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 -~----------~----~----~----~------~----~------~--~---