<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>edrackham &#187; Featured</title>
	<link>http://edrackham.com</link>
	<description>PHP, MySQL, and Other Web Snippets!</description>
	<pubDate>Wed, 25 Jun 2008 13:38:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>Get Random Row with MySQL Without ORDER BY RAND()</title>
		<link>http://edrackham.com/featured/get-random-row-with-mysql-without-order-by-rand/</link>
		<comments>http://edrackham.com/featured/get-random-row-with-mysql-without-order-by-rand/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 12:12:24 +0000</pubDate>
		<dc:creator>Ed</dc:creator>
		
		<category><![CDATA[Featured]]></category>

		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[fast]]></category>

		<category><![CDATA[random row]]></category>
<category>fast</category><category>MySQL</category><category>random row</category>
		<guid isPermaLink="false">http://edrackham.com/mysql/get-random-row-with-mysql-without-rand/</guid>
		<description><![CDATA[This is an update to a previous post of mine which uses the RAND() method. Using the following code, you can retrieve a random row much, much faster (MySQL 4.1.x/5.0.x), with thanks to Jan Kneschke:

SELECT &#60;COLUMN&#62; FROM &#60;TABLE&#62; AS r1
JOIN &#40;SELECT ROUND&#40;
&#160; RAND&#40; &#41; * &#40;
&#160; &#160; SELECT MAX&#40; id &#41; FROM &#60;TABLE&#62;&#41;
&#160; &#41; AS [...]]]></description>
			<content:encoded><![CDATA[<p>This is an update to a <a href="http://edrackham.com/php/get-random-row-with-mysql/" title="Slower, but useful for smaller tables">previous post of mine</a> which uses the RAND() method. Using the following code, you can retrieve a random row much, much faster (MySQL 4.1.x/5.0.x), with thanks to Jan Kneschke:</p>
<div class="codesnip-container" >
<div class="codesnip"><span class="kw1">SELECT</span> &lt;COLUMN&gt; <span class="kw1">FROM</span> &lt;TABLE&gt; <span class="kw1">AS</span> r1<br />
<span class="kw1">JOIN</span> <span class="br0">&#40;</span><span class="kw1">SELECT</span> ROUND<span class="br0">&#40;</span><br />
&nbsp; RAND<span class="br0">&#40;</span> <span class="br0">&#41;</span> * <span class="br0">&#40;</span><br />
&nbsp; &nbsp; <span class="kw1">SELECT</span> MAX<span class="br0">&#40;</span> id <span class="br0">&#41;</span> <span class="kw1">FROM</span> &lt;TABLE&gt;<span class="br0">&#41;</span><br />
&nbsp; <span class="br0">&#41;</span> <span class="kw1">AS</span> id<br />
<span class="br0">&#41;</span> <span class="kw1">AS</span> r2<br />
<span class="kw1">WHERE</span> r1.id &gt;= r2.id<br />
<span class="kw1">ORDER</span> <span class="kw1">BY</span> r1.id <span class="kw1">ASC</span><br />
<span class="kw1">LIMIT</span> <span class="nu0">1</span>;</div>
</div>
<p>
<div align="center"><script type="text/javascript"><!--
google_ad_client = "pub-4159646232668987";
/* 468x60, created 3/10/08 */
google_ad_slot = "7234899452";
google_ad_width = 468;
google_ad_height = 60;
google_cpa_choice = ""; // on file
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
</p>
<p>Replace:</p>
<ul>
<li><strong>&lt;COLUMN&gt;</strong> with the name of the column(s) you wish to retrieve</li>
<li><strong>&lt;TABLE&gt;</strong> with the name of the table you wish to retrieve the data from</li>
</ul>
<p>I&#039;ve tested this with a table with over 660,000 records, and got a response in 0.0200 seconds, whereas with ORDER BY RAND() i got a response in 2.1599 seconds.</p>
<h4>Total Number of Rows:</h4>
<p><img src="http://edrackham.com/images/posts/num-rows.gif" alt="Cardinality" style="border:1px solid #ccc" /></p>
<h4>Old Method:</h4>
<p><img src="http://edrackham.com/images/posts/faster-rand-mysql-old-query.gif" alt="Old Method" style="border:1px solid #ccc" /></p>
<h4>New Method:</h4>
<p><img src="http://edrackham.com/images/posts/faster-rand-mysql-new-query.gif" alt="New Method" style="border:1px solid #ccc" /></p>
<p>
<div align="center"><script type="text/javascript"><!--
google_ad_client = "pub-4159646232668987";
/* 468x60, created 3/10/08 */
google_ad_slot = "7234899452";
google_ad_width = 468;
google_ad_height = 60;
google_cpa_choice = ""; // on file
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://edrackham.com/featured/get-random-row-with-mysql-without-order-by-rand/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
