千家信息网

MySQL随机选取资源--优化

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,接前文:http://blog.itpub.net/29254281/viewspace-2120294/前文中,Order by rand()在数据量大的时候,会有一些性能问题.set autoco
千家信息网最后更新 2026年11月01日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