00:00
讲今天的重点索引的优化,以及如何避免索引失效,那么呢,在讲之前,根据前面的学习,同学们应该知道explain是不是进行性能优化相关的一个重要命令和参数啊,那么其中最重要的大家都知道是不是有possible case和case呀,理论上你能用到哪个引,所以实际最终是不是用没用到啊好,那么呢,我们呢,下面呢,我们来看一下,所以失效我们应该处理和面对的问题分别是哪一些好,稍等一下哈,音箱有点调整一下好,那么呢,刚才呢,调整一下这个音箱好,那么大家请看索引失效,首先失效的前提是不是要有效啊,换句话说什么说明到这一步的时候,我们的所前面我们是不是学了如何见索引,以及索引是什么,以及有哪些啊,现在的意思就是什么?
01:00
啊,主人你索引呢,你见过了,我们说过建索引是不是相当于说给底层的某个知道和数据进行过排序啊,好,你帮我修好了楼,一楼二楼三楼沿着这个顺序走,但是现在所谓的索引失效什么概念呢?就是不好意思,主人你所建立的是吗?顺序我用不上了,建了我们要用上听懂,那么也就说key这个真实的这个字段假设是烂的话,一种叫没见,一种是不是叫见了以后索引失效啊,那么呢,所以说的话呢,这边的话呢,我们呢,应该来怎么着,是不是要避免索引失效的情况啊,OK,来,那么呢,同学们请看,索引失效是我们应该避免的情况,OK,首先我们呢,来进行一下见表,我们呢。
02:00
建一张员工表没问题吧,那么大家如果大家是去吃过麦当劳的时候,是不是那个收银台,他的仓储物流台后面有一个staff only内部员工专用通道啊,那么一般而言,做系统的时候,如果说customer是不是外面的互联网的广大人民群众啊,如果staff是不是代表某个公司的内网员工啊,OK,那么好表呢,很简单,分别是名字、年龄、职位,加入公司的时间,那么呢,我们呢,建表构建了一点数据,做select查询,能保证数据能出来,然后out table stuffs前面我是不是用了create index呀,那么现在同学们呢,加这个以后,大家看我见的是单指索引还是符合索引,好,那么这个时候全选,那么呢,弄下来,然后呢,我。
03:00
我们呢,所要接触和干的事儿,那么呢,开工好,那么这个时候大家请看是不是胰腺。见表顺利没问题吧,那么呢,名字啊,然后呢,以及他们的字段类型,注意name目是不是发差呀,好的,那么呢,我们呢往下找,下面我们来看看建表以后我们是不是现在是不是要演示索引失效啊,那反过来优化的前提是不是建了以后不让它失效,你不让所以失效的S是不是就是好S啊,当然这是一个维度哈,那么至少就是说什么你能够用到整体的DBA为整个系统建好的所引你都能用到,是不是没有失效啊好,那么呢,现在要求同学们加J10条进行抓图,然后导入到有道云和你们的印象笔记当中,一条条过。上述就是常见的Java开发过程当中索引失效的各种原因,来第一个。
04:13
我们来看什么叫全职匹配,我最爱呢?那么好,大家看show index from stuffs,各位亲,我有没有见索引好那么呢,我把这个拖宽一点哈,好,大家看我是不是name age名字、年龄、职位position了以后,建了一个符合索引,一楼二楼三楼,他的意思是不是先从一楼找按序找内这排排序找到完了以后是再上二楼去找A级,也就是说主人按照你的命令,我以为按照你的要求的顺序,按照名字、年龄、职位排序完成,那么好,我们来看看。
05:00
现在我们呢,来看看第一条最好最完美的SQL是不是主人你怎么建的我就怎么用,这是不是最好的好同学们请看一下我们呢,现在。第一条咱们建的是不是name age级position啊,好,干掉好,这个时候请问explain这条circle so easy吧,Explain好,结合周三我们的知识来看看他的分析情况。第一个请问现在。全职匹配是不是个数加顺序啊,好,同学们,现在我建了三个,我用了几个,大家猜猜索引会不会失效,为啥?因为我是不是起码给个面子部分使用到了呀,好,你进三,我用了一,那么这个时候我们呢,可以非常清晰的看到我们相关的case情况1SIMPLE,我相信通过前面explain的基础知识的学习这些东西现在没有问题了吧,好,有没有用的,有没有用的好,那么大家看名字等于这个,你看river引用是不是一个产量啊,听好了type代表反问类别,River是决定性能好不好听懂这个river其中和这个river跟我说是不是两个不同的意思呀,OK,好,那么再来。
06:42
那么来同学们,大家请看,此时是不是只有两个了,好,那么呢,有两个的话,我们呢,可以看到,大家请看现在你跟我讲是用到了一个还是两个,两个好,何以见得我们可以看到一个清晰的这个长度,就像我们说的,昨天我们聊过相同结果下精度越少,长度越短,是不是越好啊,但是我们也说过,你东西你要想精度提高,付出的代价是不是要大一些,再说白一点,这是一个,这是不是两个,说明这个是不是用到两个呀?好嘞,那么再来第三者,大家看我们这个时候一回车,大家看74,七十八幺四零这个三个是不是逐渐的精度越来越高啊。
07:42
嗯,OK,那么你精度要求越来越高,就好比你吃的东西质量和数量都更好了,那么请问长度或者是花费的代价是不是要多一些?好,那么现在我们来看看。我们的问题是这样的。
08:01
第一个我们写完了以后,大家可以看到三种情况是不是都OK啊好,现在呢我呢给他呢调整一下。好,各位同学首先哈,我们先暂时把explain给它去掉。好,我们是不是没有H等于25的呀?好,如果是这个哈,我看看具体值是多少,那么这个时候你看年龄是不是23啊,OK,那么呢,我们呢,来看看,好,各位亲,回答我一个问题,能不能查出来,也就是说我们这门高级部分的可数CQ都是对的,结果是不是都能查出来,我们看过程,那么这个时候同学们,我们呢,Explain,那么请问我此时staff表按照我之前的操作,我有没有见过索引?好,此时我一回车,大家请看效果,大家请看之前给个面子,咱们是不是river river是不是还是不错的,然后这个river是constant产量。
09:29
可是同样的结果,我这儿是不是也写了产量?前面我们大家可以看到,兄弟你这儿是不是两个产量啊?而这块儿是不是绝对是烂了?尤其更加坑爹的是太谱变成了全表扫描,且实际使用的索引我们明明建了,但是是不是没用到啊?好,那么再来,同学们请看。这个时候大家呢,再来看看,判断一下我能不能用到这个索引呢?好,我们再来搂一眼,是不是也是坑爹货呀?好,那么呢,全表扫描,然后呢,P没有再来,但是这个时候同学们。
10:23
根据我们前面的讲解,我们的。把内单独留下好,那么同学们我们继续,大家请看,这个时候我们可以看到这个是不是只有一个内幕呀,有没有好,那么呢,综合算数我们呢会发现。主人,你建的是name age position,但是如果我没有了开头的这个name,只有单独的age,或者单独的position,或者name,或者是只有age和position的话,请问我们能不能用到索引?所以说这个时候其实质而言,结合我们下面的说法,什么概念呢?它违背了我们高效CQ的最重要的原则,那就是最佳左前缀法则。那么呢,如何拆解什么叫最佳左前缀法则呢?言下之意,同学们请看,如果索引了多列,要遵守最佳左前缀法则是指查询从索引的最左前列开始,并且不要跳过索引中的列,这个时候。
11:49
我们大家可以看什么概念呢?也就是说综合起来得到我们的第一句口诀,那就是什么带头大哥不能死。好,同学们,请看主人你给我建的是不是name age position,言下之意,最左numberone,带头大哥老大是不是name呀?Name就相当于火车的火车头,Age和position相当于车厢。请问单独有火车头,火车能不能跑?所以说单独有内幕的时候,所以有没有失厢?好,请问有火车头挂着一个或者多个车厢,整列火车可不可以跑?所以说再来,如果没有车头,只有车厢,这个答案我相信不用我说了吧?那么所以说最佳左前缀法则的第一句话就是。
12:49
是索引见了以后再说白一点是吗?一楼二楼三楼,这是主人你给我搭好的梯子,现在你把一楼给我干掉了,你让我怎么爬得到二楼呢?再说难听点是不是也没有空中楼阁这种东西啊?所以说最佳左倾人法则的第一句话就是要求是吗?从最左开始,你建的索引的第一个字段不能丢失,听懂好,那么呢,我们呢,再来看现在同学们请lawyer眼继续学习我们的什么最佳左旋转法则,好,我们刚才可以看到单独有内幕的时候没问题吧?好,现在大家请看全都有的候没问题吧,全都有是不是我们说的全职匹配我最爱了?好,现在我们出现的问题是。
13:49
好,同学们,请问此时会不会发生索引失效的情况?好,有两种声音,我们呢,直接用explain来分析一下,好兄弟们,火车头带头大哥在不在?好,这个时候我们的一回车可以看到,首先同学们,Type等于瑞法,是不是绝对用到了索引啊,理论上应该用到这个实际上有没有用到,但是是全值匹配的,全部用到还是部分使用正确,很简单,同学们大家看,正常来说,如果说你两个都要用到,各位亲,这个长度恐怕应该是78以上吧。第二个constant是不是也应该是二啊,那么这个时候说明什么?它违背了我们的最佳左倾法。
14:49
读的第二个口诀,那就是什么中间兄弟不能断,简单而言,也就是说此时你的学习什么概念,一楼、二楼、三楼,主人我上一楼了,你把二楼给我干掉了,就好比是什么抬头,咱们这儿是不是有三个墩子呀?一楼我跳到这儿都玩过马里兄弟吧,本来一层一层跳上去,你现在把中间给我干掉了,我一楼是不是上来了,但是我能不能跑到三楼跑不到,所以说,所以干嘛只用到了一部分,而且只用到了第一个,就是内,所以说我们把最佳左旋转法则再温习一遍。
15:36
查询从索引的最左列开始,最左列开始是不是我们的带头大哥不能死啊,并且不跳过索引的中间列,那是不是就跟什么火车车厢一样,12345,你现在把二号车厢干翻了,没有了,那么一跟着火车头走了,但是二没有了,345是不是出现了断档的情况啊,那么所以说第二个就是什么中间兄弟不能断,那么呢,我们呢,可以呢,看到这种情况,大家看是不是带头大哥没了,是不是全部要扫描了,好那么呢,同学们呢,我们呢,刚才呢,调整一下音箱哈,OK,那么大家呢,可以看到,这个时候我们应该明白,根据刚才的演示,所谓最佳左前缀法则重不重要,那么呢,可以看到。
16:35
同样都能查出结果,但是你中间的这个过程对于MYSQL的影响还是蛮大的,现在我们的数据小,你就是全标扫描了也无所谓,但是键的,所以没用上,这个是不是非常影响上生产的系统啊?所以说最佳左前缀法则就一句话,一、带头大哥不能死,二、中间兄弟不能断。这是我们的第一个口诀,后面还有好往下走,大面看,大家再来看第三条。
我来说两句