<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:Courier New, courier, monaco, monospace, sans-serif;font-size:12pt"><DIV></DIV>
<DIV><FONT face="arial, helvetica, sans-serif">Yes, I saw&nbsp;that - and many others. One variation uses a LOCK to eliminate the&nbsp;race potential, but I am reluctant to do that. Unfortunately, that has a problem if there are key gaps. This looks a bit more fail-proof: </FONT><A href="http://edrackham.com/featured/get-random-row-with-mysql-without-order-by-rand/"><FONT face="arial, helvetica, sans-serif">http://edrackham.com/featured/get-random-row-with-mysql-without-order-by-rand/</FONT></A></DIV>
<DIV><FONT face="arial, helvetica, sans-serif"></FONT>&nbsp;</DIV>
<DIV><FONT face="arial, helvetica, sans-serif">My issue with these techniques is that the vast majority of the users of the Quotes module don't have anywhere near 12K quotes nodes (I personally have 163), so do I let the one suffer, or&nbsp;let everyone use the "improved" technique (meaning an additional table), or choose some point at which to switch techniques (code bloat). And, of course, making sure it works on Postgres as well.</FONT></DIV>
<P><FONT face="arial, helvetica, sans-serif"></FONT>&nbsp;</P>
<P><FONT face="arial, helvetica, sans-serif">I'd be happy to move this discussion to another venue if anyone is upset.</P>
<DIV><BR></FONT>&nbsp;</DIV>
<P><FONT color=#ff007f size=4 face="bookman old style, new york, times, serif"><EM><STRONG>Nancy</STRONG></EM></FONT></P>
<P>&nbsp;</P>
<P><FONT face="arial, helvetica, sans-serif">Injustice anywhere is a threat to justice everywhere. -- Dr. Martin L. King, Jr.</FONT></P>
<DIV><BR></DIV>
<DIV style="FONT-FAMILY: Courier New, courier, monaco, monospace, sans-serif; FONT-SIZE: 12pt"><BR><FONT size=2 face=Tahoma>
<DIV style="FONT-FAMILY: Courier New, monaco, monospace, sans-serif; FONT-SIZE: 10pt">
<HR SIZE=1>
</DIV>
<DIV style="FONT-FAMILY: Courier New, monaco, monospace, sans-serif; FONT-SIZE: 10pt"><B><SPAN style="FONT-WEIGHT: bold">From:</SPAN></B> Larry Garfield</DIV>
<DIV style="FONT-FAMILY: Courier New, monaco, monospace, sans-serif; FONT-SIZE: 10pt"></FONT>&nbsp;</DIV>
<DIV style="FONT-FAMILY: Courier New, monaco, monospace, sans-serif; FONT-SIZE: 10pt">Actually, I just found this in the MySQL manual in user comments:<BR><BR>SELECT FLOOR(RAND() * COUNT(*)) AS rand_row FROM {mytemp};<BR>SELECT nid FROM {mytemp} LIMIT $rand_row, 1;<BR><BR>That could actually be faster, at the cost of being two queries so there are <BR>technically potential race conditions.&nbsp; (Unlikely to be a problem in practice, <BR>but still there.)&nbsp; I've not tried the above; I just saw it and thought it was <BR>cool. :-)&nbsp; (It's also MySQL-specific. I don't know if the same thing would <BR>work well on other databases.)<BR></DIV></DIV></div></body></html>