這個案例并不是我遇到的,但是我的工作生產環境中有使用到federated存儲引擎,所以記錄一下。
優化前
有一條SQL部分截取內容如下,執行約268秒才能出結果:
優化后
從這條SQL的執行計劃中可以看出來mego.trade_order并沒有出現在table列中,經查看,mego.trade_order是一個Federated存儲引擎,類似Oracle的DBlink,在本地只是個鏈接的形式存在,實際數據文件并不存在。
所以mego.trade_order表作為一個subquery效率非常差,可以改寫成join的方式,去掉subquery,讓mego.trade_order表盡量第一個前面的結果join,減少去遠程服務器取數據的次數,優化如下,優化過后只需要0.74秒
有關Federated存儲引擎參考鏈接
https://dev.mysql.com/doc/refman/5.5/en/federated-storage-engine.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。