一般的简单的获取随机几条数据的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的随机浮点数
阅读全文>