您当前位置: 首页 >  WEB技术 >  MySQL数据库里面随机获取一条或多条记录
2021/3/31 8:49:25 分类:WEB技术

MySQL数据库里面随机获取一条或多条记录

工作中会遇到从数据库中随机获取一条或多条记录的场景,下面介绍几种随机获取的方法供参考。 表中存放30万记录。

1、使用order by rand()
SELECT * FROM users ORDER BY RAND() LIMIT 1;
LIMIT 1的执行时间:0.559s, LIMIT 100 耗时0.660s。

此种方法在数据量小的情况下可以使用,但在生产环境不建议使用。

MYSQL手册里面针对RAND()的提示大概意思就是,在 ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描,导致效率相当相当的低,效率不行,切忌使用。

2、使用join及rand()函数
SELECT * FROM users AS t1 JOIN (SELECT ROUND(RAND()*(SELECT MAX(id)
FROM users)) AS id) AS t2 WHERE t1.id>=t2.id ORDER BY t1.id LIMIT 1;
此sql随机获取一条的时间是0.014s,LIMIT 100时耗时 0.020s,性能上没差多少。

获取多条的话有时会达不到要求(获取的记录数可能达不到多条)

3、子查询及rand()函数
SELECT * FROM users as t1 WHERE t1.id>=(RAND()*(SELECT MAX(id) FROM users)) LIMIT 1;
随机去一条的耗时:0.015,LIMIT 100时耗时 0.026s。

随机获取一条记录推荐使用 第2种方法,在30万条记录时也只需0.014s。

本文由胡金金个人网站2021年3月31日整理发布,转载注明:http://www.hujinjin.com/info/17368.html

凡标明来源于胡金金个人网站的文章,皆为本站整理发布,若转载此文必须附原文链接,对部分平台更改其文内容当自己原创者,胡金金个人网站将保留其追究权利!
个人资讯推荐
友情链接