⼗⼏个⼤表leftjoin的⼤SQL查询优化
⼗⼏个⼤表left join的⼤SQL查询优化
问题
⼗⼏个表关联查询,有⼦查询,并表和left join表查询,由于近期上了⽣产,每天都有⼏万条应⽤,查询⼀个星期内的数据,⽤了⼏⼗分钟,导致触发熔断机制
获取⽣产环境中的sql
下载⽇志
获取到执⾏的sql
替换参数
得到完整的带参数的sql
测试环境复现失败
在测试环境上未能复现成功,但是上线就会出现这个问题
让测试结构复现数据,不可⾏,数据成分不⼀致,可能效果完全不同
并且有那么多表,要进⾏构造数据也是很⿇烦的
最后是去现⽹导出相关表的数据,进⾏复现
分析sql
去掉不影响查询效率的sql
然后进⾏分析主要的sql看⼀看为什么会慢
从sql优化下⼿
分析数据库索引,是否left join字段没有添加索引,没有发现问题
分析数据库执⾏计划,explain,没有发现问题
分析数据量,⼤多是⼏百万⼏千万数据量的超⼤表
优化建议
sql left join 多表连接⼩表left join⼤表,⼤表放在后⾯
⽤⼦查询进⾏查询,缩⼩数据量
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论