这个案例并不是我遇到的,但是我的工作生产环境中有使用到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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。