SQL 语句执行时间过长

Yp_Lou 2019-09-28 02:31:17
各位大佬,请帮忙检查下SQL哪里有问题。非常感谢!!
增加最后一张表的执行时间是 7s, 不关联最后一张表的执行时间是 0.6s, 相差 10 倍
最后一张表的数据量是:1.2w

SELECT Bus_TransferData.*,Bus_TransferData.F_Unit AS F_UnitId
FROM Bus_TransferData
INNER JOIN Bus_TransferInfo ON Bus_TransferInfo.F_Id=Bus_TransferData.F_TransferId
LEFT JOIN Bus_DesignTask ON Bus_TransferData.F_TaskId=Bus_DesignTask.F_Id
LEFT JOIN Bus_Project ON Bus_Project.F_Id=Bus_TransferData.F_ProjectId
LEFT JOIN bus_projectbom ON Bus_DesignTask.F_BomId=bus_projectbom.F_Id
LEFT JOIN Bus_PartInfo ON Bus_TransferData.F_PartId=Bus_PartInfo.F_Id
LEFT JOIN Bus_PartInfo g ON Bus_TransferData.F_EquipmentId=g.F_Id
LEFT JOIN bus_rawinfo_test ON Bus_TransferData.F_RawId = bus_rawinfo_test.F_Id
...全文
236 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
蜕变之痛 2019-10-04
  • 打赏
  • 举报
回复
从”增加最后一张表的执行时间是 7s, 不关联最后一张表的执行时间是 0.6s”,可知道最后一张表的关联的字段没有索引,或不是唯一索引,或存在大量的默认值被多次关联。
lhdz_bj 2019-10-01
  • 打赏
  • 举报
回复
引用 楼主 Yp_Lou 的回复:
各位大佬,请帮忙检查下SQL哪里有问题。非常感谢!!
增加最后一张表的执行时间是 7s, 不关联最后一张表的执行时间是 0.6s, 相差 10 倍
最后一张表的数据量是:1.2w

SELECT Bus_TransferData.*,Bus_TransferData.F_Unit AS F_UnitId
FROM Bus_TransferData
INNER JOIN Bus_TransferInfo ON Bus_TransferInfo.F_Id=Bus_TransferData.F_TransferId
LEFT JOIN Bus_DesignTask ON Bus_TransferData.F_TaskId=Bus_DesignTask.F_Id
LEFT JOIN Bus_Project ON Bus_Project.F_Id=Bus_TransferData.F_ProjectId
LEFT JOIN bus_projectbom ON Bus_DesignTask.F_BomId=bus_projectbom.F_Id
LEFT JOIN Bus_PartInfo ON Bus_TransferData.F_PartId=Bus_PartInfo.F_Id
LEFT JOIN Bus_PartInfo g ON Bus_TransferData.F_EquipmentId=g.F_Id
LEFT JOIN bus_rawinfo_test ON Bus_TransferData.F_RawId = bus_rawinfo_test.F_Id


调优的关键是看执行计划,可否发下执行计划?谢谢。
AHUA1001 2019-09-30
  • 打赏
  • 举报
回复
首先,您是最后LEFT JOIN的Bus_TransferData,而前边有好多地方用到了Bus_TransferData,这样的写法,应该会报错。 另外,您可以看看业务逻辑上,是否可以把LEFT JOIN改成JOIN,改完以后,应该会有提升。 再就是在使用的字段上,增加索引。
遇星 2019-09-30
  • 打赏
  • 举报
回复
LEFT JOIN bus_rawinfo_test ON Bus_TransferData.F_RawId = bus_rawinfo_test.F_Id,在bus_rawinfo_test.F_Id要有索引,而且执行计划要用到这个索引,也就是说,不能有类型转换,字符集不匹配等因素导致索引时效;
  • 打赏
  • 举报
回复
1. 字段 bus_rawinfo_test.F_Id 上有没有索引? 2. 最终的结果有多少?可不可以用分页(LIMIT)?

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧