MySQL隨機選取資源--優化
接前文:
http://blog.itpub.net/29254281/viewspace-2120294/
前文中,Order by rand()在資料量大的時候,會有一些效能問題.
優化的方式就是從最大的ID,隨機選取一個值。
這樣避免了排序.
但是應用程式還是需要判斷,Update的影響行數是否為0.如果為0,則需要再次呼叫.
大招版本:
http://blog.itpub.net/29254281/viewspace-2120294/
前文中,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;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2120379/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL隨機選取資源MySql隨機
- Web靜態資源快取及優化Web快取優化
- MySQL 資料庫效能優化之快取引數優化MySql資料庫優化快取
- MySQL資料庫效能優化之快取引數優化(轉)MySql資料庫優化快取
- MySQL 效能優化之快取引數優化MySql優化快取
- 如何實現MySQL隨機查詢資料與MySQL隨機更新資料?MySql隨機
- 表中隨機取資料隨機
- cocos2d-x 優化(紋理渲染優化、資源快取、記憶體優化)優化快取記憶體
- 鎖機制優化MySQL優化MySql
- 優化MySQL,還是使用快取?優化MySql快取
- 優化MySQL 還是使用快取?優化MySql快取
- 隨機選組隨機
- Mysql取隨機資料效率測試(400W條中讀取100條)MySql隨機
- MySQL用隨機資料填充表MySql隨機
- MySQL 隨機查詢資料與隨機更新資料實現程式碼MySql隨機
- MySQL資料庫優化MySql資料庫優化
- oracle隨機取樣Oracle隨機
- 效能優化隨筆優化
- js隨機從陣列中取資料JS隨機陣列
- Mysql資料庫優化系列(一)------Mysql伺服器優化思路MySql資料庫優化伺服器
- MySQL 效能優化之儲存引擎選擇MySql優化儲存引擎
- mysql生成隨機數MySql隨機
- 百萬資料 mysql count(*)優化MySql優化
- MYSQL資料庫------SQL優化MySql資料庫優化
- MYSQL 大資料效能優化MySql大資料優化
- PHP獲取隨機數PHP隨機
- Random獲取隨機數random隨機
- 隨機取表記錄隨機
- mysql 5.7 初始化密碼或隨機密碼MySql密碼隨機
- SQL語句select隨機調取10行資料 Access/SQL Server/Mysql等資料庫隨機ServerMySql資料庫
- 從oracle表中隨機取記錄,產生隨機數和隨機字串Oracle隨機字串
- MySQL如何選擇隨機記錄?有好幾種方式呢!MySql隨機
- mysql優化MySql優化
- Mysql 優化MySql優化
- 【資料庫】MySQL查詢優化資料庫MySql優化
- MySQL 資料庫與 SQL 優化MySql資料庫優化
- MySQL 批量匯入資料優化MySql優化
- MySQL 用隨機資料填充外來鍵表MySql隨機