这周老猫事务性的工作比较多,只接了三四个客户问题,拿一个难度适中的问题分享给大家。
讲真,不知道为什么,问题总是在下午4:30-5:30来,难道是性能差到影响了下班,才喊人?由于客户这个习惯,我尽量出门不开车,必须开车的情况,也努力避开4:30-5:30这个时段。
我在地铁上,愉快地看着订阅号,问题来了。客户有条SQL执行了1700多秒,还没有执行完,执行计划如下:

这个执行计划慢的地方是:
“
🔹第16步花了775秒
🔹第12步花了424秒
🔹第18步花了397秒
🔹第13步花了128秒
有经验的DBA,看这个执行计划,一眼就能看出两个问题:
一个是VIEW PUSHED PREDICATE,关掉这个功能,可以执行计划大概率会走HASH JOIN,性能问题应该可以解决。
第二个问题是第16步的分表扫描,预计返回8条数据,但是成本是12423,明显可以建个索引。
问题果真是这样的吗?
老猫不是个经验型的DBA,事实证明每次靠经验给客户的答案总是会被打脸。
在这个案例中,老猫将会和大家一起分析这个SQL性能问题的根因,并探讨view push predicate的背后原理,同时研究一下怎样在NDV少的列上创建索引。
快点击下图预约,今晚见!

更多实战分享请关注公众号:“中亦安图”和“中亦安图服务号”以及视频号:“小y-黄远邦-中亦”和“中亦安图”!也可以加小y微信,shadow-huang-bj,进微信群探讨技术。喜欢就转发吧,您的转发是我们持续分享的动力!
文章转载自中亦安图服务号,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




