在做业务遇到一个场景,需要给与用户随机推出数据库中的一张图片。
一开始做法如下:
select * from img_table order by rand() limit 1;
后来发现这个查询效率太慢,不符合需求
改进,利用图片的id,使用随机数随机一个边界,效率有明显提升。
select * from img_table
where id >= (
((select MAX(id) from img_table) - (select min(id) from img_table))*rand() + (select min(id) from img_table)
) limit 1;
一些建议:https://cloud.tencent.com/document/product/236/13390