mysql的order by rand方法实际运用
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,下文内容主要给大家带来mysql的order by rand方法实际运用,这里所讲到的知识,与书籍略有不同,都是专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮
千家信息网最后更新 2025年01月22日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安全错误
数据库的锁怎样保障安全
软件开发 招聘网站
总结网络安全短语
城阳区定制软件开发哪家好
服务器存储挂载
sql服务器设置密码错误
弹幕服务器连接失败
双生视界手游官方服务器
服务器安全工作规范
属于网络安全技术的有()
网络安全工程师需要哪些书
小型打印服务器
足球队 数据库设计
手机上传照片服务器python
数据库恢复的技术原理
日本软件开发人员怎么样
网络安全标语24字
网络安全知多少500字
网络安全最基本的原则
网络安全与防御措施
hp服务器怎么做阵列
landmark数据库在哪里
数据库的数据独立性是指
服务器安装管理
产品特征数据库
光环新网服务器托管
vs上位机软件开发教程
数据库死锁语句怎么查
大厅强管理优服务器
网络安全电子手抄报资料
网络安全你我他作文评语