00:00
ID是不是第一反应是主键啊,他呢不是,然后请问你们ID了以后,是不是一二三四五六七八九十,那么呢,它这呢也不是他的值呢,有三种ID相同,ID不同,ID相同又不同,我是不是说绕了好我们继续看好,那么呢,我们呢往下翻来,那么这些我先关一下哈,你不要管来ID他呢干的活呢是这样的。Select查询的一个序列号包含了一组数字,表示查询中执行select子句或者操作的顺序。它的值有三种分别我们来看一下,第一种,ID相同,表示MYSQL内部的查询优化器执行主人的命令,也就是说加载表的这个顺序是顺序的从上到下。那么呢,请看我呢,随便整两张表。
01:29
T1T2T3没问题吧,那么这个时候我们写了以后,这个呢是一种粗略的介绍,那么呢,你不用管PE1表到底是什么意思,能理解吗?好,那么呢,我们呢,先不看后面的,大家看是不是分别是111啊,一般而言大家都知道正常你们的理解是ID应该是123啊,但是所以故意先把相同的先说一下,那么什么意思呢?按照你的理解,From t1T2T3是不是应该是123的加载顺序啊好抱歉,我们ID了以后,下面我们可以看到我们的什么select type,你先不要管是什么,但是起码同学们应该明白一点是什么这个词,Simple,这个是不是一个简单查询啊,好,当然哈,其实简单的也不简单是不是啊,好,当然我们待会会说,但是现在我们会。
02:29
看看,起码这个单词应该知道没有好,它的意思是ID相同的前提下,执行顺序什么由上至下,也就是说它先加载了哪张表啊,也就是说你的理解是123,不好意思啊,MYCQL的执行和加载顺序分别是132,好那么这个时候就你不用怀疑这个就是什么属于MYSQL理解了主人所发送的是吗命令,那么呢,大家请看一下什么意思呢?我们加了这个条件以后,别忘了我们这Y要后面是不是还有个end的呀,这个end是不是甩到右边,它最右边开始加载的时候是不是先有T1啊,那么呢,132,也就是说现在我们不用管后面哈,你就当后面没见过,也就是说当我们I。
03:29
Ad相同的时候,执行顺序是由上到下的,懂吗?再来,下面我们看第二种ID不同,来,大家请看一下。这种SQ没问题吧,是不是子查询啊,好,大家看,如果说你没有学过这个,可能有些同学会理解FROM213没错吧,但是同学们请看from t2idt一点,ID等于这个,那么呢,我们呢,根据我们的explain,所以我跟你说的意思什么呢?讲证据,不用争论,不用猜,你论分析出来MY我就告诉你主人我是如何理解你的意思,我是如何执行这句话的,这个时候大家请看我们的ID是不是123了,是不是第一种情况是全相同,第二种情况是不是逐渐的全部同了,而且出现了递增,那么这个时候。
04:41
大家呢,这个是不是资查询的意思啊?好,就算暂时我们还没有讲select type,但是从字面意思上,同学们是不是也能够猜出来?好,这有个primary primary是不是主查询啊?好,那么同学们请看一下,那么你们认为它的加载顺序应该是123321213等等呢?好,同学们我们来看看table table这个词是不是没学也知道什么意思呀?注意,如果是子查询,ID大的会递增,ID值越大,优先级越高,越先被执行,那么也就是说这条CQL主人你发送给MYCQ以后,MYCQ的理解是312。
05:35
理由是什么呢?首先你不用怀疑这是MYCQ吐出来的,是MYCQL认为最优的顺序,不是你认为的听懂他这里告诉你说主人你想的,你脑子想的和我买SQL查询优化器的,我吐给你,我是这么理解的,道理也很简单,咱们在Java基础的时候,是不是学过一种运算级优先级啊,运算服优先级加括号的是不是最优先,那么大家看最里层和最外层是这样的。
06:04
所谓sub query代表查询,Primary代表什么?最外层查询,也就是说最外层的,跟我讲T2是不是在最外面,它是不是应该是321最小的话是最外,最外面被执行,最后被执行啊,什么意思呢?就好比大家想你括号里面又有括号,括号里面又有括号,还是是不是要执行最里面的优先级最高,中心开花的原则啊,再不好理解,你就这么想,T3是不是鸡蛋黄,T1是不是鸡蛋白,T2是不是鸡蛋壳啊,小鸡出来也是从鸡蛋壳里面出来,没听说哪个鸡已经在外面,他把那个壳给着烂了吧,鸡是不是从里面出来了,那么也就是说T3它括号里面最新,那么呢,这个时候T3的查询类型是不是一个子查询啊?好,T1也就说就有点像递归一样的,你要有T2就像没方法去。
07:05
又掉了MASTER1 master1又掉了MASTER2,最终要返回,是不是先要用MASTER2,然后退回给MASTER1,最终这个方法是不是才有效?OK,那么呢,理论就是这样,所以说如果是子查询ID的序号,并且有递增的情况,那么呢,数字越大越先执行。听相同是平行,那么就是顺序执行,ID如果不同如果是执行的话,那就是谁的序号高,谁先执行听懂好,那么第三种情况,那么呢,碰上了ID相同不同同时存在,那么这个时候我们呢,来搂一眼相来大家看一下ID相同又不同,这种情况又如何处理呢?先看看,注意这个是不是一张虚表了,它并不是以前那样像T2这样写的真实了哈,那么这个时候大家请看它的ID2个。
08:15
好,先走一还是先走二,先走哪一个,注意它的规则是永远是数字大的优先级最高,数字大的先走,那么二完了以后到一啊,到一了以后我们又是评级,评级了以后顺序执行听懂,那么所以说我们T2完了以后,各位亲,我们可以看这个是不是括号,括号的时候要优先执行,括号里面是不是T3,那么言下之意这一块是不是数字2T3先执行啊,但是呢,同学们在primary以后大家看。这货大家是不是括号里面的先走完T3,括号里面走完T3以后,我们要顺序执行,顺序执行以后大家看这有个DERIVED2,这个derived的意思是延申的意思,它的意思是什么呢?就是说哥们你呢,先执行完T3 T3完了括号里面的得到一张,但是T3完了以后,外面是不是也是个S1这张表啊,这张表是不是括号是不是,其实说白了这张虚表最终是不是叫S1啊,那么它是内部延伸出来的,所以叫延伸虚表,听懂,那么这个二是什么意思呢?这个二就是这个二明白,那么假如说现在我们112345某个区里有DERIVED4,那么说明它就是第四个ID被加载的明白,也就是说现在这个1DERIVED2它干什么?
09:58
那他把什么我们后面的什么S1这个弄出来,然后最终是不是在跟T2执行啊,那么呢,先括号里面的得到了T3,再来括号外面的SE这张虚表,它是一张延伸二号表,这个二就是它没问题吧,然后呢,我们呢也有来干,直接在最终把什么TR加载进来,也就是说ID如果相同,可以认为是一组从上往下顺序执行,在所有组当中,ID值越大,优先级越高,越先执行们抬头,现在请同学们回答我。
10:44
再来看这句话的时候,表的读取顺序懂了吗?是不是听到O了,OK,那么呢,这就是什么?前面第一板斧得给你们说理论,第二板斧咱们呢才是这些理论的代码实操落地,那呢,同理下面一个个的来勾,那么这个时候同学们要明白是不是你写的表结构是123的顺序MYCQ理解起来就一定是按123走啊不是,所以说这个呢,就是我们的什么是explain以及explain的ID情况,OK,最终它决定的是表的读取和加载顺序,相同顺序走不同,看谁大大的信息OK,好,那么同学们,我们下课休息一下。
我来说两句