要从tablename表中随机提取一条记录,大家一般的写法就是:
1 | SELECT * FROM tablename ORDER BY RAND() LIMIT 1。 |
RAND() 函数返回的是一个小于1的随机数
但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上
修改写法后
1 2 3 | SELECT * FROM `table` WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM `table`))) ORDER BY id LIMIT 1; |
这下,效率提高了,查询时间只有0.01秒
完成收工
个人微信 :yx159337
欢迎一起探讨