MySQL数据库中随机获取一条或多条记录
工作中会遇到从数据库中随机获取一条或多条记录的场景,下面介绍几种随机获取的方法供参考。
首先创建个users表演示
1 |
|
表中存放30万记录。
1、使用order by rand()
1 |
|
LIMIT 1的执行时间:0.559s, LIMIT 100 耗时0.660s。
此种方法在数据量小的情况下可以使用,但在生产环境不建议使用。
MYSQL手册里面针对RAND()的提示大概意思就是,在 ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描,导致效率相当相当的低,效率不行,切忌使用。
2、使用join及rand()函数
1 |
|
此sql随机获取一条的时间是0.014s,LIMIT 100时耗时 0.020s,性能上没差多少。
获取多条的话有时会达不到要求(获取的记录数可能达不到多条)
3、子查询及rand()函数
1 |
|
随机去一条的耗时:0.015,LIMIT 100时耗时 0.026s。
随机获取一条记录推荐使用 第2种方法,在30万条记录时也只需0.014s。
MySQL数据库中随机获取一条或多条记录
https://river106.cn/posts/d2fcd3c7.html