mysql的order by rand方法实际运用
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,下文内容主要给大家带来mysql的order by rand方法实际运用,这里所讲到的知识,与书籍略有不同,都是专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮
千家信息网最后更新 2026年11月03日mysql的order by rand方法实际运用
下文内容主要给大家带来mysql的order by rand方法实际运用,这里所讲到的知识,与书籍略有不同,都是专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮助。
从一次查询中随机返回一条数据,一般使用mysql的order by rand() 方法来实现
例如: 从20万用户中随机抽取1个用户
mysql> select * from user order by rand() limit 1;+-------+------------+----------------------------------+----------+--------------+-----------+| id | phone | password | salt | country_code | ip |+-------+------------+----------------------------------+----------+--------------+-----------+| 15160 | 6549721306 | e4f302120c006880a247b652ad0e42f2 | 40343586 | 86 | 127.0.0.1 |+-------+------------+----------------------------------+----------+--------------+-----------+1 row in set (0.25 sec)mysql> explain select * from user order by rand() limit 1;+----+-------------+-------+------+---------------+------+---------+------+--------+---------------------------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-------+------+---------------+------+---------+------+--------+---------------------------------+| 1 | SIMPLE | user | ALL | NULL | NULL | NULL | NULL | 200303 | Using temporary; Using filesort |+----+-------------+-------+------+---------------+------+---------+------+--------+---------------------------------+1 row in set (0.00 sec)
根据分析结果,运行需要0.25秒,order by rand() 需要使用临时表(Using temporary),需要使用文件排序(Using filesort),效率低下。
改进方法
1.首先获取查询的总记录条数total
2.在总记录条数中随机偏移N条(N=0~total-1)
3.使用limit N,1 获取记录
代码如下:
分析:
mysql> select * from user limit 23541,1;+-------+------------+----------------------------------+----------+--------------+-----------+| id | phone | password | salt | country_code | ip |+-------+------------+----------------------------------+----------+--------------+-----------+| 23542 | 3740507464 | c8bc1890de179538d8a49cc211859a46 | 93863419 | 86 | 127.0.0.1 |+-------+------------+----------------------------------+----------+--------------+-----------+1 row in set (0.01 sec)mysql> explain select * from user limit 23541,1;+----+-------------+-------+------+---------------+------+---------+------+--------+-------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-------+------+---------------+------+---------+------+--------+-------+| 1 | SIMPLE | user | ALL | NULL | NULL | NULL | NULL | 200303 | NULL |+----+-------------+-------+------+---------------+------+---------+------+--------+-------+1 row in set (0.00 sec)
本篇介绍了mysql order by rand() 效率优化方法 ,更多相关内容请关注。
相关推荐:
解读php的PDO连接数据库的相关内容
讲解PHP面向对象,PHP继承相关代码
在PHP中使用魔术方法__CLASS__来获取类名的相关操作
以上就是mysql的order by rand方法实际运用详细内容,更多请关注其它相关文章!
方法
内容
用户
实际
代码
效率
数据
更多
分析
查询
不同
低下
下文
专业
书籍
人员
价值
对象
就是
技术
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花魁咖啡
盈实互联网科技
朗新科技与工业互联网
互联网 科技创业
奇酷互联网科技
北京互联网络科技有限公司
互联网科技ppt模板
深圳天众互联网科技公司
互联网金融 科技创新
互联网科技博客
互联网养老 桔豆科技
互联网科技类展会
联恩商钥互联网科技有限公司
深圳前海聚择互联网科技有限公司
福州新华互联网科技学校 知乎
互联网企业和科技型企业
互联网科技与管理
2021互联网科技公司排名
互联网科技年终奖
长沙渺峰互联网科技有限公司
互联网科技公司怎么样
南京欣网互联网科技
致聘互联网科技
融贸通互联网科技
崇明区互联网教育科技售后服务
互联网与医疗科技
银川新华互联网科技学校联系电话
想开互联网科技公司怎么样
互联网公司黑科技创始人
梅州GM互联网络科技有限公司