我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL随机选取资源--优化

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL随机选取资源--优化

接前文:
http://blog.itpub.net/29254281/viewspace-2120294/

前文中,Order by rand()在数据量大的时候,会有一些性能问题.

  1. set autocommit=false;  
  2. set @roomid:=-1;  
  3. select   
  4.     min(roomid) into @roomid  
  5. from  
  6.     room_info  
  7. where  
  8.     roomid >   
  9.     (  
  10.         select   
  11.             floor(max(roomid) * rand() + 1)  
  12.         from  
  13.             room_info  
  14.     )  
  15.     and state = 1;  
  16.   
  17. update room_info   
  18. set   
  19.     state = 2  
  20. where  
  21.     roomid =@roomid  
  22.     and state = 1;  
  23.         
  24. select @roomid;    
  25.   
  26. commit;  

优化的方式就是从最大的ID,随机选取一个值。
这样避免了排序.
但是应用程序还是需要判断,Update的影响行数是否为0.如果为0,则需要再次调用.

大招版本:
  1. set autocommit=false;    
  2. set @roomid:=-1;    
  3. select max(roomid) into @roomid from room_info;    
  4. set @roomid:=floor(rand()*@roomid+1);  
  5. update room_info     
  6. set     
  7.     state = 2    
  8. where    
  9. roomid =    
  10. coalesce    
  11. (    
  12.     (select roomid from (select min(roomid) roomid from room_info where state=1 and roomid > @roomid) a),    
  13.     (select roomid from (select max(roomid) roomid from room_info where state=1 and roomid < @roomid) b)    
  14. )    
  15. and state = 1 and @roomid:=roomid;    
  16.           
  17. select @roomid;      
  18.     
  19. commit;    

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL随机选取资源--优化

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

虚拟主机是否提供系统资源使用优化建议

是的,虚拟主机提供者通常会提供系统资源使用优化建议。这些建议可能包括优化网站代码、数据库查询、图片压缩等方面的建议,以提高网站性能并节省系统资源。此外,虚拟主机提供者还可能提供监控工具和报告,帮助用户了解他们的网站使用了多少系统资源,并提供
虚拟主机是否提供系统资源使用优化建议
2024-07-04

服务器虚拟机规划的核心思想:以策略布局优化资源分配

服务器虚拟机规划的核心思想是根据业务需求和资源限制,对虚拟机进行合理布局和优化资源分配,以提高虚拟化环境的性能和效率。
服务器虚拟机规划的核心思想:以策略布局优化资源分配
2024-02-11

操作系统内存分配和释放的艺术:探寻计算机资源优化的奥秘

内存管理是操作系统的一项核心任务,它负责为正在运行的程序分配和释放内存空间。内存管理的艺术在于如何有效地利用有限的内存资源,使系统能够同时运行多个程序,并且在程序之间分配内存时,能够提高应用程序的运行效率。
操作系统内存分配和释放的艺术:探寻计算机资源优化的奥秘
2024-02-12

MySQL的索引与HBase的索引机制在大数据查询优化中的选择

在大数据查询优化中,选择MySQL的索引还是HBase的索引机制,取决于具体的应用场景和查询需求。以下是MySQL和HBase索引机制的特点和适用场景:MySQL索引机制索引类型:MySQL支持B+树索引、哈希索引、全文索引等。适用场景
MySQL的索引与HBase的索引机制在大数据查询优化中的选择
2024-10-22

编程热搜

目录