千家信息网

MySQL随机选取资源--优化

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,接前文:http://blog.itpub.net/29254281/viewspace-2120294/前文中,Order by rand()在数据量大的时候,会有一些性能问题.set autoco
千家信息网最后更新 2025年01月21日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. update room_info
  17. set
  18. state = 2
  19. where
  20. roomid =@roomid
  21. and state = 1;
  22. select @roomid;
  23. 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. select @roomid;
  17. commit;

前文 最大 再次 应用程序 性能 数据 方式 时候 版本 程序 还是 问题 应用 影响 排序 资源 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 信息网络技术和家校联系论文 数据库的资源复制是什么 惠州菜鸟软件开发有限公司 如何知道数据库的操作类型 网络安全手抄报三年级简单少字 关于加强网络安全的通知 公安信息网络安全管理实施细则 冒险岛市场数据库技术 亿速运的高防服务器怎么样 后端软件开发公司有哪些 网络安全工程师要会编程吗 网络安全能力分析 钟祥市公共就业和人才服务器 粉丝联机我的世界服务器 怎么打开云服务器的文件 你理解的网络安全 高校选课数据库系统的设计 常州个人软件开发诚信合作 安擎服务器是什么牌子的 实体服务器怎么开我的世界 国外最新网络安全事件 江西网络技术补贴 什么指令可以刷爆我的世界服务器 服务器股票公式如何编写 河北众人互联网科技有限公司 中国服务器市场研究报告 网络安全工程师证书要学多久 软件开发行业状况 计算机网络技术班徽元素 课题研究数据库
0