<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Plugin v/d Week: Find Random</title>
    <link>http://hollandonrails.nl/articles/306-Plugin-v-d-Week-Find-Random</link>
    <description>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&#235;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":http://railslodge.com/plugins/964-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:
&lt;code&gt;items = Item.random(5, :conditions =&gt; ["col1 = ? or col2 = ?", val1, val2])&lt;/code&gt;

of zonder conditions:
&lt;code&gt;items = Item.random(5)&lt;/code&gt;</description>
    <item>
      <title>Plugin v/d Week: Find Random</title>
      <description>&lt;p&gt;Weet niet wat meer overhead heeft, realistisch gezien: deze plugin of de (inderdaad niet waanzinnig effici&#235;nte) mysql order by rand().&lt;/p&gt;


	&lt;p&gt;Een MySQL random select uit 37276 records duurt op een van mijn langzaamste db-servers 0.2 seconden. Acceptabel vind ik!&lt;/p&gt;</description>
      <author>joost@spacebabies.nl (joost baaij)</author>
      <pubDate>Wed, 05 Mar 2008 22:16:42 +0100</pubDate>
      <link>http://hollandonrails.nl/comments/2232</link>
      <guid>http://hollandonrails.nl/comments/2232</guid>
    </item>
  </channel>
</rss>
