Plugin v/d Week: Find Random
Chiel Wester wo 05 maa 2008
In je applicatie moet je ten alle tijden voorkomen dat er via een ‘ORDER BY RAND’ statement records random uit de database worden gehaald. Wanneer je database wat groter wordt, dan zal de laadtijd van dit soort queries enorm toenemen. Dit komt omdat MySQL niet echt een efficiënte manier heeft om dit soort queries uit te voeren.
Wil je toch willekeurige records op je site tonen, dan biedt deze plugin een goed alternatief. De Find Random plugin vraagt eerst alle ids op van je database call, en pakt vervolgens hier random enkele ids uit. Vervolgens vraagt de plugin de daadwerkelijke data van de records met de geselecteerd ids op.
Het opvragen van 5 random items ziet er dan zo uit:
items = Item.random(5, :conditions => ["col1 = ? or col2 = ?", val1, val2])
of zonder conditions:
items = Item.random(5)
Gepost in hor | 1 reactie
Welkom op Holland On Rails
Het startpunt voor Ruby On Rails in Nederland. Vind de laatste technieken, meningen en nieuwtjes.Recente Jobs
Die-Hard programmeur!
Houd jij van bowlen en The A-team? Kom dan bij ons werken! Wij ontwikkelen alleen maar in Rails, dus feest! Daarnaast hebben we Herman Miller stoelen!
(Zomaar een leuk project welke we gemaakt hebben: mijnopenid.nl)
@ Holder, Obdam
Stagiaires zijn welkom
voor opdrachten met leading edge open source technologiën. We bieden zorgvuldige en inhoudelijk goede begeleiding.
@ Agile Dovadi, Amsterdam
Bekijk alle jobs »»
Gereedschapskist
Onmisbare tools vooriedere developer!
- Ruby On Rails
Framework voor de web 2.0 developer. Eindelijk vooruitgang! - TextMate
Editor for true pro's
Typ, tab, top :-)
Nee, niet voor Win. - Made On A Mac
En nou is het over met die saaie grijze Windows bak van je!
Auteurs op deze site
Chris Obdam
'Less is more' evangelist, past dit ook dagelijks toe op zijn tandenborstel.Chiel Wester
Snelheidswonder op Ruby wielen. Leuk om mee te pair-programmen ;-)
joost baaij wo 05 maa 2008, 22:16
Weet niet wat meer overhead heeft, realistisch gezien: deze plugin of de (inderdaad niet waanzinnig efficiënte) mysql order by rand().
Een MySQL random select uit 37276 records duurt op een van mijn langzaamste db-servers 0.2 seconden. Acceptabel vind ik!
Plaats je reactie