国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL隨機挑選資源--優化

2024-07-24 12:31:55
字體:
來源:轉載
供稿:網友
        Order by rand()在數據量大的時候,會有一些性能問題.
 
set autocommit=false;  
set @roomid:=-1;  
select   
    min(roomid) into @roomid  
from  
    room_info  
where  
    roomid >   
    (  
        select   
            floor(max(roomid) * rand() + 1)  
        from  
            room_info  
    )  
    and state = 1;  
  
update room_info   
set   
    state = 2  
where  
    roomid =@roomid  
    and state = 1;  
        
select @roomid;    
  
commit;  
 
     優化的方式就是從最大的ID,隨機選取一個值。
     這樣避免了排序.
     但是應用程序還是需要判斷,Update的影響行數是否為0.如果為0,則需要再次調用.
 
大招版本:
set autocommit=false;    
set @roomid:=-1;    
select max(roomid) into @roomid from room_info;    
set @roomid:=floor(rand()*@roomid+1);  
update room_info     
set     
    state = 2    
where    
roomid =    
coalesce    
(    
    (select roomid from (select min(roomid) roomid from room_info where state=1 and roomid > @roomid) a),    
    (select roomid from (select max(roomid) roomid from room_info where state=1 and roomid < @roomid) b)    
)    
and state = 1 and @roomid:=roomid;    
          
select @roomid;      
    
commit;    

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 远安县| 浏阳市| 通渭县| 宣化县| 西贡区| 分宜县| 永清县| 遂川县| 五原县| 连平县| 三穗县| 清涧县| 左云县| 乌兰察布市| 深州市| 玛纳斯县| 邻水| 烟台市| 渭源县| 孟津县| 连南| 平度市| 南漳县| 霞浦县| 天门市| 鱼台县| 上饶县| 娄烦县| 崇礼县| 安吉县| 南宁市| 城固县| 西昌市| 丽江市| 池州市| 武功县| 清苑县| 尤溪县| 普洱| 奉化市| 新乡市|