• ADADADADAD

    MySQL随机选取资源--优化[ mysql数据库 ]

    mysql数据库 时间:2024-12-03 12:14:20

    作者:文/会员上传

    简介:

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

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

    setautocommit=false; set@roomid:=-1; select

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

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

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

      setautocommit=false; set@roomid:=-1; select min(roomid)into@roomid from room_info where roomid> ( select floor(max(roomid)*rand()+1) from room_info ) andstate=1;updateroom_info set state=2 where roomid=@roomid andstate=1;select@roomid;commit;

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

    大招版本:
      setautocommit=false; set@roomid:=-1; selectmax(roomid)into@roomidfromroom_info; set@roomid:=floor(rand()*@roomid+1); updateroom_info set state=2 where roomid= coalesce ( (selectroomidfrom(selectmin(roomid)roomidfromroom_infowherestate=1androomid>@roomid)a), (selectroomidfrom(selectmax(roomid)roomidfromroom_infowherestate=1androomid<@roomid)b) ) andstate=1and@roomid:=roomid;select@roomid;commit;

    MySQL随机选取资源--优化.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysql资源优化