RAND() 是什么?

RAND()是MySQL的函数。其作用是随机生成一个(0,1)之间的数字。方法不支持参数。

SELECT RAND(); -- 0.8950709559908797
SELECT RAND() * 100; -- 33.96913132999943
SELECT FLOOR( RAND() * 100 ); -- 68

性能贼差,被阿里云标记为慢SQL

SELECT *
FROM `table_name`
WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` )
ORDER BY id LIMIT 1;

换一种写法

SELECT * FROM `testChatSet` ORDER BY RAND() LIMIT 1;

总结

MySQL RAND() 性能不是特别好。在一些大型表中产生性能问题。如果有此类需求,还是建议分析、调整需求。优先考虑使用分页参数拿到某一页数据后,再用Java在应用层从中随机选出一条记录!因为真的从数据库选一条记录出来似乎没啥大意义。如果数据了很大,选到10年前的XX记录,对于当前随机来说,改功能在产品的存在的意义可能就需要再做定夺了。

特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤