美文网首页
mysql 随机选取一条记录 - rand() 坑

mysql 随机选取一条记录 - rand() 坑

作者: 端木安玉 | 来源:发表于2020-01-08 14:22 被阅读0次

要从tablename表中随机提取一条记录,大家一般的写法就是:

SELECT * FROM tablename ORDER BY RAND() LIMIT 1。

RAND() 函数返回的是一个小于1的随机数

但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描。

但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上
修改写法后

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

这下,效率提高了,查询时间只有0.01秒
完成收工
个人微信 :yx159337
欢迎一起探讨

相关文章

  • mysql 随机选取一条记录 - rand() 坑

    要从tablename表中随机提取一条记录,大家一般的写法就是: RAND() 函数返回的是一个小于1的随机数 ...

  • 21随机函数:RAND 2018-10-11

    1、基本用法 ①=RAND()随机0-1 ② =RAND()*100随机0-100 ③ =ROUND(RAND()...

  • srand rand mt_rand

    srand 产生随机种子 rand 真正产颜色随机数 mt_rand真正产颜色随机数,范围比rand大

  • php rand

    实例 生成随机数: echo(rand() . ""); echo(rand() . ""); echo(rand...

  • 秋招准备-算法题-概率类

    rand 5 生成rand 7 随机数生成器现有一个rand5的随机数,欲生成一个rand8的随机数,应如何操作?...

  • SQL Server 2016 函数:RAND

    RAND 生成随机小数(如:0.939817875628405) 想要生成随机整数可以将 RAND() 乘以一个正...

  • 随机获取Mysql数据表的一条或多条记录

    随机获得MySQL[http://lib.csdn.net/base/mysql]数据表的一条或多条记录有很多方法...

  • CPP语法笔记

    随机数生成器 随机数生成器能随机生成0~RAND_MAX之间的整型数,包括0和RAND_MAX。RAND_MAX是...

  • PHP rand() 函数

    例子 本例会返回一些随机数:

  • rand()/srand()

    一、rand() rand()函数用来产生随机数,但是,rand()的内部实现是用线性同余法实现的,是伪随机数,由...

网友评论

      本文标题:mysql 随机选取一条记录 - rand() 坑

      本文链接:https://www.haomeiwen.com/subject/ggcsactx.html