mysql随机记录条数查询的优化


mysql随机记录条数查询的优化记录
查找相关文章:rand mysql mysql随机

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