Oracle数据库SQL优化之概述

SQL优化是每个后端面试均会碰到的面试题目,怎么回答好这个问题,因人而异。一般毛竹是这么回答的,首先会从执行计划入手,然后看I/O、CPU,再看表关联,说的再详细一点就是全表扫、有没有走索引,或者从业务入手…是不是很业余,很明显答的太泛了,这肯定不是面试官想要得到的结果了。那该怎么回答那,我其实到现在也没有更好的答案,那大家是不是就奇怪了,那本篇到底要干什么,好啦好啦,不卖关子了,当然要分享一点干活啦,那就开始吧。
一、自己整理的SQL脑图
19年那会是从事oracle开发的第三个年头,开始整理了一些东西,其中有个文档已经有90多页,但不便于分享,只好将自己整理的sql优化脑图分享给各位啦,请接招:
Oracle数据库SQL优化之概述

这个图是经过反反复复修改过的,就在刚才还再修改,后续可能还要修改。(PS:偷笑)
二、表达与沟通技巧
是不是又有点懵逼了,毛竹到底要干嘛,不是要说sql优化吗,怎么扯到了沟通技巧。没错没错,先说表达沟通技巧,完了再谈谈怎么回答好这个题目。
表达和漫无目的的闲聊不同,由于期望达到某种目的的表达能力,可分为三个层次:1.条理清晰;2.有说服力;3.有影响力。高效表达的三步法:1.定主题;2.套用框架,快速整理表达思路;3.数据+故事让表达更具说服力。
三、回答问题
上面刚买了点关子,言归正传,套用上面表达技巧,下面谈谈sql优化:
1.主题:sql优化
2.套用框架,那什么框架那,在这里我推荐:问题-原因-解决方案即what-why-how方案;比如:sql优化索引部分(what),每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据(why),不走索引导致全表扫描写法的规避、索引重建等(how)
3.数据+故事,这个需要举具体例子,比如毛竹举个之前优化遇到的例子,有一个查询必须用到每天的抄表数据表,但抄表数据表由于是原始数据,数据量大,表关联当然会导致sql慢,毛竹从业务角度出发,优化了业务,业务表增加一字段并稍微改了存储数据的方式,优化前查询1000条数据需要30s,优化后查询同样1000条数据只需要2s,是不是数据+故事,由于时间有点长了,这个数据可能稍微有点问题,但真的有这么夸张。
四、写在最后
其实本篇题目就叫sql优化概述,所以我也不会说很具体怎么回答这个问题啦,后续我打算从执行计划和统计信息部分着重入手,执行计划部分会更加详细介绍,等执行计划和统计信息讲完后,再来回答这个问题。下篇预告,执行计划,给我几天时间让我好好整理整理思路。