這個案例並非我遇到的,可是個人工做生產環境中有使用到federated存儲引擎,因此記錄一下。html
優化前mysql
有一條SQL部分截取內容以下,執行約268秒才能出結果:sql
優化後服務器
從這條SQL的執行計劃中能夠看出來mego.trade_order並無出如今table列中,經查看,mego.trade_order是一個Federated存儲引擎,相似Oracle的DBlink,在本地只是個連接的形式存在,實際數據文件並不存在。ide
因此mego.trade_order表做爲一個subquery效率很是差,能夠改寫成join的方式,去掉subquery,讓mego.trade_order表儘可能第一個前面的結果join,減小去遠程服務器取數據的次數,優化以下,優化事後只須要0.74秒優化
有關Federated存儲引擎參考連接spa
https://dev.mysql.com/doc/refman/5.5/en/federated-storage-engine.htmlhtm