mysql的order by rand方法实际运用
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,下文内容主要给大家带来mysql的order by rand方法实际运用,这里所讲到的知识,与书籍略有不同,都是专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮
千家信息网最后更新 2025年11月11日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安全错误
数据库的锁怎样保障安全
服务器发消息给小程序管理员
淮安联想服务器工厂
什么是可视化软件开发
工程类计算机网络技术
计算机网络技术主要学是什么
浙江学习软件开发外包
求生而服务器
国外标准题录数据库
软件开发小说阅读
等保 边界安全 网络安全
北京本地软件开发制造价格
我的世界工业时代太阳能服务器
滨州软件开发哪家好
安阳盛世财鸿网络技术
厦门市网络安全活动
数据库的事务是锁么
dcs world服务器是什么
绍兴手机软件开发流程
impdp导致数据库停止
服务器管理器正在运行
法治与网络安全的作文
为啥所有服务器都放贵州云服务器
2077武器数据库
中国飞宇网络技术团队
实现网络安全通信的协议
服务器管理员的权限
安徽在线网络技术开发计划表
联想新服务器如何安装raid卡
网络安全的脆弱性分类标准
国产数据库技术瓶颈