91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL隨機選取資源--優化

發布時間:2020-08-10 13:02:13 來源:ITPUB博客 閱讀:156 作者:壹頁書 欄目: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;    

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东城区| 延安市| 湖口县| 永年县| 锡林浩特市| 木里| 峨山| 池州市| 大名县| 诸城市| 平陆县| 沐川县| 古交市| 临泉县| 济宁市| 广河县| 故城县| 长泰县| 九江市| 新巴尔虎右旗| 宜兴市| 政和县| 昆山市| 武宁县| 芜湖县| 明溪县| 兰西县| 曲沃县| 宁城县| 马关县| 武定县| 红安县| 诏安县| 沙河市| 视频| 镇雄县| 梨树县| 兴城市| 灵璧县| 澄江县| 泾阳县|