一般的简单的获取随机几条数据的sql语句可能是这样
SELECT * FROM table WHERE 1 ORDER BY RAND() LIMIT N;
当数据库记录总数比较少的时候,这种方式还是不慢的,然而到一个级别后,比如10万
这个时候就非常的慢了,需要优化
SELECT a.* FROM TABLE AS a JOIN (SELECT MAX( id ) AS bid FROM TABLE) AS b ON (a.id >= FLOOR(b.bid*RAND())) WHERE 1 LIMIT N
从表中取出最大的id,RAND() 产生的是一个0到1.0的随机浮点数
这篇文章发布于 2011年11月9日,星期三,11:43,归类于 mysql, php。 您可以跟踪这篇文章的评论通过 RSS 2.0 feed。 您可以留下评论,或者从您的站点trackback。