博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql之rand()随机取数
阅读量:4111 次
发布时间:2019-05-25

本文共 1825 字,大约阅读时间需要 6 分钟。

需求:

随机读取表的一条记录

数据准备:

1.表结构

mysql> desc tb_random;+-------+--------------+------+-----+---------+----------------+| Field | Type         | Null | Key | Default | Extra          |+-------+--------------+------+-----+---------+----------------+| id    | int(11)      | NO   | PRI | NULL    | auto_increment || name  | varchar(200) | YES  |     | NULL    |                |+-------+--------------+------+-----+---------+----------------+

数据量:百万

 

实现:

1.基于rand()

SELECT * FROM tb_random   ORDER BY rand() LIMIT 1;

2.基于随机id取值,借助rand()和FLOOR()

SELECT * FROM tb_random WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM tb_random ) ORDER BY id LIMIT 1;

性能可以通过explain来看执行计划:

explain SELECT * FROM tb_random   ORDER BY rand() LIMIT 1 \G;

结果:

*************************** 1. row ***************************           id: 1  select_type: SIMPLE        table: tb_random         type: ALLpossible_keys: NULL          key: NULL      key_len: NULL          ref: NULL         rows: 15995114        Extra: Using temporary; Using filesort1 row in set (0.00 sec)

结论:没有采用索引

 

第二种方案:

explain SELECT * FROM tb_random WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM tb_random ) ORDER BY id LIMIT 1 \G;

结果:

*************************** 1. row ***************************           id: 1  select_type: PRIMARY        table: tb_random         type: indexpossible_keys: NULL          key: PRIMARY      key_len: 4          ref: NULL         rows: 1        Extra: Using where*************************** 2. row ***************************           id: 2  select_type: UNCACHEABLE SUBQUERY        table: tb_random         type: indexpossible_keys: NULL          key: PRIMARY      key_len: 4          ref: NULL         rows: 15995114        Extra: Using index2 rows in set (0.00 sec)

结论:using index

 

PS:

mysql函数 写道
floor:函数只返回整数部分,小数部分舍弃。
round:函数四舍五入,大于0.5的部分进位。

  

 

 

转载地址:http://dqqsi.baihongyu.com/

你可能感兴趣的文章
管理用户状态——Cookie与Session
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>
PHP 7 的五大新特性
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
【增强学习在无人驾驶中的应用】
查看>>
OpenCV meanshift目标跟踪总结
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
听说玩这些游戏能提升编程能力?
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
Mysql复制表以及复制数据库
查看>>
Kafka
查看>>
9.1 为我们的角色划分权限
查看>>
维吉尼亚之加解密及破解
查看>>
TCP/IP协议三次握手与四次握手流程解析
查看>>
PHP 扩展开发 : 编写一个hello world !
查看>>
inet_ntoa、 inet_aton、inet_addr
查看>>