00:00
那么接下来呢,我们来讲完Rose以后已经知道了这个东西是不是用的越少越好啊,好,那么来下面再来看extra这个是不是额外的拓展的呀,说白了就是MYSQL觉得这一排还不够。它又不能再给它变得太长了,是不看到的,害怕呀,那么这个时候的话呢,怎么着把这个词呢单独在这儿,也就说它也跟type一样,是不是一个字段里面有多种值啊,好,那么呢,我们呢,往下看,这个又会产生一些什么样额外的信息呢?好,包含不适合在其他列中显示但十分重要的额外信息,那么呢,也就是说各位亲,你们和面试官去看,或者你们去做的时候,ID type key Rose这个这五个最重要的那段字段属性听懂,那么呢,我们来看看,当然呢,这个里面呢,又砍出来了几个呢,也是非常的啰嗦哈。
01:17
我们呢,十分重要的额外信息,是不是再提醒一句啊啊OK,我们呢,来看看它有额外信息有哪些呢?第一个using file sort,那么呢,这个呢是拿来干什么呢?注意看一眼。它呢,称作文件内排序,说明MYSQL会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行什么读取。那么也就是说干嘛呢,MYSQL中无法利用所引完成的排序称之为什么呀?文件内排序,言下之意呢,什么意思呢?就是说你建好了索引,我们说过其实见索引,其实是不是把数据进行一顺溜的梳理先排序啊,那么言下之意,主人你给我修好的楼梯是一楼,二楼,三楼,我。
02:31
原本要遵照着你帮我修好的建好的索引顺序,我照着你的来,可是因为某种情况下导致我用不上你的索引,或者说我在使用的过程当中出现了其他问题,我只好干嘛自己另起炉灶,再把这些顺序,再把这些数据在内部再排序一次听懂,也就是说,如果说你出现了using file sort,那么呢,这种情况比较坑爹,比较危险,几乎是九死一生,明白吗?好,很啰嗦的数据,大的时候那么呢,来。
03:12
我们呢,往下看,那么呢,再往下来。先看看这个来首先哈口味,有些同学刚才说什么杠G是什么东西,这个没问题吧,是不是explain加C啊好,是不是KV键值竖版啊横版没记加G竖版O吗?好,那么比如说我是习惯用这个,那么就看各位亲,你们爱用哪个用哪个行吧,这个呢说一嘴,但是注意你这干个分号了以后,那么呢,是不是错误的描述展现啊啊不用加这个分号啊,那么来干嘛呢?
04:05
跑一圈IDE simple table t1这三个有没有问题?Type是river,各位亲,我们现在再来看见了,是符合索引还是单指索引几个字段,OK,各位亲,万要CALL1,请问我CALL1,也就是我说的什么主人你帮我建的,所以修好的楼梯是一楼,二楼、三楼你已经帮我排好序了,哥们儿,你登梯子的顺序现在一楼,请跟我讲有没有用到,那么这个时候是不是type,说明你已经用到了这个索引,当然它是不是没有全部使用,是部分使用到啊,好,但是呢,我们来看看它产生一些什么鬼。这克拉基用到了索引,并且是不是一个产量啊,貌似这些都OK Rose也好说吧,一切挺和谐的。但是关心的问题。
05:08
好,同学们看好U,额外的我们先粗略的学一遍哈,额外的using你不用说,我确实用的第二个using index,那么什么概念,我是不是用了索引了,因为我们也知道我这扩机,你这查的字段是扩,是不是跟我有部分匹配和吻合啊,再来using fair是不是产生了文件那一排序啊,也就是说不好意思啊,主人。拟见的索引在检索方面我部分使用到了,但是我们说过索引是不是干两件事儿,排序和查询,查询的时候我部分使用到了,为什么?很简单,我这个case不为难吧,有没有为难这个key不能难,并且有名字说明它是不是实际使用到了这个索引,而且我们也看得出这个river是不是个产量,确实是不是用到了column些,你建的是不是也叫COLUMN123,我是不是用到了一些,所以查询方面是用到了,但是不好意思啊,排序我没有用到,什么概念呢,我们呢,来看一组东西哈,就是之前学过的。
06:27
我们来看哪些情况需要创建索引。来看前面查询中排序的字段,排序字段如果通过索引去访问,将大大提高排序速度。还记不记得第一天讲的说过这句话,也就是说你排序的时候是不是最好也给我遵守你所见所引的顺序和个数啊?那么言下之意什么意思呢?来,同学们,我们呢,来看看这块给我们惹了些什么事,在讲它之前先明白,刚才我说拖回去往前翻了昨天的内容啊,一索引跟排序是有关系的,刚才我们也说过,我们建索引的有个优化的条件,是不是建排序,建索引后你排序访问的时候是不是也按照所引的顺序啊?但是这什么意思啊,兄弟,你这是一,这是三,中间二是不是没了好,我们呢,先往下看。
07:30
两者对比一下有什么区别?大家看从开头到order by之前的是不是都一样,但是这个是你给我建的楼,是一楼二楼三楼,但是不好意思啊,中间二楼你是不是我把梯子抽了,但是这个货是一楼上来以后又按照二楼三楼,请问踏上这个了吗?嗯,那么这个时候大家请看我们这个不是乱说的,这些是不是都是MYCQL自我分析了以后explain出来的化验单啊来,大家请看看我们的结论跟前者有什么区别,明白了吧?那么也就是说同学们抬头从此两条CQ,你会发现后者的性能是不是高于前者,意思什么?同样查询后。
08:31
或者主人你怎么修的路,我就沿着你的索引走,哥们儿,我直接就到这个结果了,查出来了,但前者主人结果我也确实查出来,但是不好意思啊,你修的路我没有走,我另起炉灶,我自己在内部产生了一次排序,跟我讲跟前面的这个后者这种性能更加的来比的话,我内部的折腾是不是要比你多了一次啊,那么也就说我产生了using file sort出现这个东西不好,那么也就是说这个时候呢,怎么着,如果可以是吧,尽快优化听懂。
09:09
好,那么呢,再来看看这个呢,Using temporary。那么呢,如果出现这个。那你就更猛了,Using fire是九死一生了,已经using temporary,那是十死无生了,听懂了吧?那么也就是说,如果出现了这个,那绝对是火烧眉毛,千钧一发了。什么概什么概念?前者只是排了个序,你后者糟糕了,产生了什么?新建了一个内部的临时表,也就是说你可能需要处理一些数据,先把它拷贝到临时表里面,然后再折腾,然后你再把临时表删除,动作是不是更凶险啊?那么来,同学们,我们呢,来看看。
10:01
使用了临时表保存中间结果。MYCP在查询结果排序的时候又使用了临时表,常见于order by和分组查询group by,也就是说,如果你的circle经常写order by和group by,也就是需要是吗?统计分析这种模块,这两个你要小心经常是什么托曼尼circle的元凶。那么大家请看using temporary,我们会产生一些什么东东?好,往下走。首先我们先到这儿跟我说,我索引实际上有没有用到,你大胆说有没有听好,只要kiss不为难,就是用到,不用有任何怀疑听懂我呢,两个字段的符合索引扣机扣二我们也说过in是不是一种范围啊,你要说老师你说的不对,那么请问这个type是不是听懂,Between end大于in,这些都是范围听懂,那么呢,往下走,哥们,你的用的范围了以后,这个索引用到了,但是不好意思啊,大家看看产生了一堆什么呀,是不是又是文件内排序,又是产生临时表数罪并发呀,那么这种SQ呢,对不对呢?对,你结果都能出来,但是慢的不笔,如果你的数据是什么百万级别的。
11:44
啊,你这个系统会被拖慢,如果多来这么几条,是不是就越来越慢呢?那么再来看看下面的写法。也就是说兄弟们,前者格住不怕,我们也知道第一个你建的顺序是不是一楼二楼啊,你现在是直接跟我说,你先不要进我们教室的时候,你先别上一楼,你直接给我爬二楼。
12:13
只有这种可能,哥们儿,你是不是自备梯子啊?另外一个就算你自备梯子了,以后跟我讲,听说过空中楼阁吗?啊,当然咱们比如说杨哥有什么高科技什么的,什么反重力系统什么的哈,那个楼就浮在那儿,咱们正常来说是不是没有一楼不会有二楼,不会没有二楼不会有三楼啊,但是这个呢,就是什么呢?主人你给我建的是一楼二楼让我按照这个顺序走,但是哥们儿你干了活了以后,一楼给我断了,直接干嘛让我上二楼,不好意思,臣妾做不到,这个时候各位亲,是不是干出了临时表和文件那排序啊,但是下面格。买色主人给你建的一楼二楼,你给我找,也给我走一楼二楼,请问跟你路线吻合吗?好,这个时候大家看。
13:06
注意,我们来看看还有没有后面这两对啦,OK,所以说请一定要注意格鲁普吧,可以这么讲,正常来说你要么就别见索引,要见索引格拜是一定尽量的是跟你的索引的个数和顺序按序来,否则特别容易产生文件内排序。当我们到后面讲那个1000万级别的case啊,我整它1000万条记录的时候,我们还一次用另外第二招收profile来进行SQL分析时候,你会发现临时表的创建是很伤系统性能的,明白,因为你创建搬数据搬到临时表用完以后,再把临时表回收数据库内部,是不是要自己折腾啊,那么这个时候就变成什么不好意思啊,我一查查这个什么500万条记录或者1000万,那么这个数据一大空间要申请的多,搬家搬的东西要多,最后要示范,那么是不是增加了数据库的负担啊好,那么呢,这个呢,就是什么using temporary,那么呢。
14:06
再往下来,那么呢,Using index这个就更猛了,听懂了吧,你要看到这种情况,那么怎么着不会挂这种情况发财了,你这是好事,好什么概念呢?也就是说前三者是X里面最重要的性能指标,前两者是比较倒霉,一个九死一生,一个十死无生,第三个发了来,什么概念呢?表示相应的s select操作使用了converting index覆盖索引,反避免访问表的数据函,效率不错。如果同时出现using well,表明索引被用来执行索引键值的查找,也。
15:06
就是说刚才我们是不是同时出现了using加using index呀?那么这个时候说明什么?索引费用来执行索引的查找,如果没有出现using,就是当有using index表明所以用来读取数据,而非执行了查找动作,OK,那么这什么意思呢?结合前面的大指针。咱们这儿是不是有一个箭头指向这using index符合索引啊,第一次,刚才呢,我们简单的说了一句,简单而言就是你见的所有的column字段刚好是你查的column字段个数和顺序刚好一致,这是不是最好啊?好,那么来同学们请看一下,我们呢,先干干这个。来,各位亲,请看一下哥们,我这儿没干s select新吧,好单一的CH2芙蓉T表YCH1等于AB走有没有?
16:11
就就这么说,理论上我能不能用到索引,实际上有没有用到,而且你用到的时候什么是一个常量引用,是不是就是固定写子的一个值等于AB啊,来看额外的信息Y啊,而且use index是不是用到了索引啊,什么概念呢?因为亲,你是COLUMN1 column2哥们你刚好查的是COLUMN2,你建的是一和二,我只要二,我是不是部分跟你重合匹配呀,所以说这是一种情况,那么呢,表明索引被动来执行索引键值的查找第二种。SPECIAL12FROM t1,我后面有没有写过呀?是不是绝对就是一个简单的啊?言下之意就是假设你这student学生表,你呢,既按照名字和年龄这两个字段建立一个符合索引两个字段,刚好你查的也是select name和age student表跟我讲是不是刚好配上啊,那么这个时候大家看这是什么,是不是用了type index啊,理论上用不用得到用,实际上用不用用到看这个啊。那么呢,最后大家看我这是不是单一的有一个using index说明,表明它直接从索引上来干,从索引就读取了数据,而没有去执行什么查找动作,那么呢,下来我们来看看覆盖索引,就是我刚才所讲的简单一句话,抬头就是什么主人你见的索引是个符合索引三个字段column。
17:49
二三,然后建好了一个索引,同意吧,这是第一步,第二步你没有写select,新也没有写SELECT1234567899个字段,你建了三个符合字段的一个索引,刚好你查的也是三个,咱们两个个数和顺序刚好匹配,所以这就是符合覆盖索引,听懂OK,那么来往下翻可以看到。
18:18
我们就统一叫覆盖索引了啊,我们用官网上那个翻译,但是有时候大家也会叫索引覆盖,嗯,都差不多这个意思啊,二加二是不是等于四啊,四乘二乘二是不是也等于四啊,咱不不叫这个渣,你两种翻译都行,也就是说我希望大家按照它官网的要求,有两种理解方式,我推荐第一种,也就是说s selectck的数据列只从索引当中就获得了,不必读取数据函lidex,说明你从索引里面查找了MYSO可以利用索引返回select列表中的字段,而不必根据索引再次读数据文件。换句话说,查询的列要被所见的索引覆盖,也就是说你见的是克拉一克拉二的符合索引,刚好你查的也就是什么克拉一克拉二或者部分满足听懂。好。那么第二种理解方式呢,呃,有兴趣呢可以理解一下,那么呢,我这儿呢就不再讲,我推荐使用辅。
19:19
干索引且理解方式第一种,当然第二种留在这儿,那么也是它官网的一种建议,那么呢,我们呢看一下,所以说如果你要使用覆盖索引,一定要注意select列表中只取出我们所需要的列,是不是尽量不要写星啊,当然反过来讲,你说那好老师你进的是COLUMN123,那我select column123能不能用到覆盖缩眼,但是我如果这个时候呢,我手欠,我写的是SELECT12345,能不能用的个数上是不是就不匹配了,覆盖,覆盖就像是一个锅和一个瓦盖一样的锅盖,锅盖咱们是不是得盖上啊,OK,你现在锅比我的碗大,那OK了哈,这就不说了,好那么呢,这个呢就是我们的什么三个最重要的字段,好那么呢,这三个前两者是点称,第三个是点赞,记住了吗?好,下面第四。
20:19
这个using well,那么呢,这个倒好理解,秒懂吧,好using doing buffer表示什么呢?这个也秒懂,什么意思呢?就是说你在查的过程当中,可能你就就应就特别多了,听懂了吧,那么那个时候呢,干嘛呢?额外的告诉你呢,你的那个呃,配置文件里面的那个缓冲器那个就应B法说明是不是可以调大一点啊好这个什么意思啊,Y要子句的值总是first,不能用来获取元组,什么意思呢?就是有点类似于就有点这样。不可能一个人的名字又等于这个又等于这个吧,那么所以说他告诉你impossible就是个first,就是主人,你说的这个事情让我买错乱了听懂,好比一个哥们又是李宇春又是男性,OK,好来,那么下面这两个用到的呢,不多,直接了解一下就行,那么呢,什么呢,它是在没有group的情况下,干嘛对索引优化做了一个操作,这个呢,不再展开,同学们知道一下就行。第八个,因为这个两个呢都很少哈,优化的distinct distinct你们也是不是很少用啊,找到干嘛第一个匹配的时候就收钩好,那么重要的呢是什么?前三个没问题吧,OK,其他的这种呢,只是一种情况说明,一般呢,工作中呢很少见,那么呢,一句话。
21:58
包含不适合在其他列中显示,但十分重要的什么额外信息展现好,那么呢,这个呢就是我们的extra。
我来说两句