mysql federated 远程表优化探索

mariadb federatedx 查询远程mysql表

SELECT COUNT(asn_line_id) FROM sinv_asn_line 

执行时间
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
mysql远程库上直接执行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
mysql federated 查询远程mysql表

SELECT count(1) FROM sinv_asn_line 

在这里插入图片描述
mysql federated 查询远程mysql表

SELECT count(1) FROM sinv_asn_line LEFT JOIN sinv_asn_header ON sinv_asn_line.asn_header_id = sinv_asn_header.asn_header_id

执行时间
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加索引后,在误差范围内执行时间上没有什么变化

最终优化方案

似乎远程表数据传输占用了很大的IO时间造成执行缓慢
1.创建远程表时不需要表结构和源表结构完全对应 可以只选用 使用到的字段和一些关键字段,也就是远程表的字段是源表字段的子集

例如:
其中通过test1 精简到只剩下关键使用字段和可能使用字段 已经来到了 6s 级 后面到test3 只剩下使用的asn_header_id 字段 还是6s 级 瓶颈已经部署传输数据量了

SELECT count(1) FROM sinv_asn_line_test3 line LEFT JOIN  sinv_asn_header_test3  header ON line.asn_header_id = header.asn_header_id

查询时间从300+ 缩减到了 6.348
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
2.在进 表 连接时 先尽量缩小数据范围 减少数据量

SELECT count(1) FROM (SELECT asn_header_id FROM sinv_asn_line_test WHERE needed_date = '2020-08-26') line LEFT JOIN  sinv_asn_header_test  header ON line.asn_header_id = header.asn_header_id

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.极限的话可以针对特定的 查询 建立 专用精简字段的远程表提供查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值