这个案例并非我遇到的,可是个人工做生产环境中有使用到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