MySQL中随机抽取一条记录
很多时候我们会遇到这样的情况,需要随机推荐一条记录。
往往我们会用到 By rand() 这个数据库排序方式。其实不然,这条语句会加大MySQL负荷。
这是一个令很多新手程序员会掉进去的陷阱。你可能不知不觉中制造了一个可怕的平静。这个陷阱在你是用BY RAND()命令时就开始创建了。
如果您真的需要随机显示你的结果,有很多更好的途径去实现。诚然这需要写更多的代码,但是能避免性能瓶颈的出现。问题在于,MySQL可能会为表中每一个独立的行执行BY RAND()命令(这会消耗处理器的处理能力),然后给你仅仅返回一行。
//我们通常会这样做:
$r = mysql_query("SELECT username FROM user ORDER BY RAND() LIMIT 1");
// 其实最好这样处理
$r = mysql_query("SELECT count(*) FROM user");
$d = mysql_fetch_row($r);
$rand = mt_rand(0,$d[0] - 1);
$r = mysql_query("SELECT username FROM user LIMIT $rand, 1");