00:00
好。来,下面我们进入到什么呢?我关键字的排序优化。来,同学们,我们呢,往下走。X句尽量使用index方式来排序,避免使用fair方式。什么意思啊,也就是说早上我们做了一道题目,是不是water by产生了fair sort呀,好不好?但是如果产生了using index可不可以介绍?所以说这就是来解释为什么会干成这种事儿,那么呢,以及他所要面对的优化问题来。下面我们呢,见表,Keep a,只有edge和birth,没问题吧,这是一个时间戳,主键都不重要,能不能简单一句话键表插两个数据,然后建入一个age birth,一个符合索引,还是单指索引好TBLA,那么这个时候来,同学们。
01:18
爽吧,都有了吧,嗯,好嘞,那么呢,完活以后,这个就是我们的表现,在建完表以后,我们呢,要看看我们的case,好,首先第一个注意现在我们对索引的分析不再是WHY之后,Order by之前的,因为这个是不是在之前都讲过了,现在我们看的是order by之后的简单一句话,现在从此刻开始我们学what之后的就一个重点,会不会产生fair,速听懂,好,那么这个时候同学们请看。
02:03
From基本上A,那么呢,是不是大于20啊,你随便写的哈,那么ORDER8X减。大家思考会不会产生非要缩糖,注意以前的提问是叫有没有用上索引,现在我们也说过,你这个A级肯定是A级和boss我建了个符合一楼开始他是不是用到了,现在的问题是关点关注,关注点是之后会不会产生fair,带头大哥是谁,有没有此刻大胆来说会不会产生非要做他。而且我们是不是覆盖索引了以后,这块A级的以后是不是还从索引上取得呀,能理解吗?那么这个时候同学们请看它呢,还用到了这个索引哈,由于这个是不是这个order by以后相当于说它是第一个呀,嗯,好,那么在来看我们往下走。
03:12
这种情况你先不要去管前面的哈,现在你就给我关注water会不会产生非有没有用啥。由于这个比较简单,我就不打字了,信不信,反正基本上这些都是你,你也知道这些都是我们打字抓出来的,都是真的哈,一句话,你见的是age级birthday,我查的时候我依照着一楼二楼,我排序的时候是不是也依照着一楼二楼啊,那么好,同学们,带头大哥是都在好。大家猜猜会不会产生菲尔索塔,有没有我们说过现在的重点是不是看water派啊,弟兄们在这块注意到后面还会讲另外一个,现在这个A级是个范围,还是个产量哈,它会有点影响哈,待会儿我们看总结,但是重要的是这儿带头大哥在不在这个,在不在这个呢?
04:32
有没有发现我说的那句话合为索引排好序的快速查找数据结构说明索引是不是着重查找和排序两种功能呢?那么也就什么主人你见的索引是name a级给我排好序了,我如果写order的时候,我的排序的顺序也跟索引的顺序趋同一致的话,是不是就可以用上索引而不会产生using fair呀?嗯。
05:04
懂吗?好,往下翻。我是不是给他反过来,你给我出去排序,你给我排的从左到右,我非要跟你从右到左那。主人,你规定的是这个顺序,我要跟你反,就好比说什么你的你穿鞋左右脚相反了,那是不是要产生非索的铜牌啊?听好了哈,咱们现在解决的是whetherby后面的事儿,不再是while后面的事。听懂了好,那么这是这三个case,来再来试试,还有其他情况,以及它所导致的原因。
06:01
再次强调,第三次强调,我不是问你有没有用上索引,我是问你会不会产生非要素,好,同学们直接看有没有带头大哥呢?是也产生了非要做他好,这个有没有非他。而且还用的是using index呀,好,再来。兄弟们,带头大哥在不在顺序和个数是否相同?现在的问题思考会不会产生非要缩同好同学们挺好波BY默认是不是肾虚啊,抬头你们去游乐玩游乐园的时候是不是一定见过这种跳楼机啊,慢慢的升高以后爽死了是吧?这个时候请跟我讲你四个字段,一升一降,一升一降,这个是不是给你很折腾,就比如说你开车第一种哈,或者你爬楼梯呀。
07:48
一楼二楼三楼逐步往上好,一楼二楼三楼逐步下,先到一楼,再到二楼,再到三楼,再到四楼,反复的折腾了以后,是不是你这个所引顺序用不上啊,什么概念?当你建A级和boss的时候,你主人默认给他建的都是一楼二楼是生的,听懂了吧,但是你非要跟我对着干生,这样导致我只能买色,说主人你给我建好的顺序是一楼二楼就是这样升的,沿着的,但是实际上你现在要让我呢,一楼二楼是这样的,那么主人你之前建的所引建好的那个顺序我用不上,哥们儿,我买CQ只能在内部里面产生一个内排序,提交给你最新的结果了然能理解吗?好,那么这个时候我们得到的结论和导致的原因是什么呢?
08:47
MYQL支持两种方式的排序,Fair和using index谁效率高,而且我们也可以看到这块弟兄们order by age是不是using index order birth是不是using fair绝对非常很好的证明了吧,也就是说用using index一定是什么using,什么using fair sort。那么这个时候说白了就是说,即便你说那老师我这儿还有using index s呢,不好意思啊,绝对拖你的后腿明白,因为我重排了一次,没完全用上主人你给的顺序,那么这个时候我们呢?
09:29
Order半满足两情况会使用是么?索引排序,那么一句话index效率高,Fair效率低,那么呢,什么概念呢?第一个order by语去使用索引最左前列,是不是也就我们所谓的最佳左前缀原则,是不是在这儿依旧有效啊?二使用外药子句有关蛋白子去条件列组合满足索引的什么,所以左前列没问题吧?那么这简单一句话也就是什么,是不是依旧符合最佳左前缀原则啊?好,那么这个完了以后得到了结论,尽可能索引列上完成排序操作,说白了是不是所引建一次已经给我排好序了,最好你的word他办再和索引一致,我们是不是避免买SQ多一次排序啊,你们来。
10:25
如果你不在索引列上面呢?为什么我们的第四个会有SQL数据库服务器的参数调U呢?大家想这招是不是最后用的呀?因为那个数据库服务器是大家共用的,不是说你想去调就去调,而且Java程序员是没这个级别和这个资格去调,只能是DP和运维经理,那么所以说他为什么要调呢?OK,我偏要跟你做对order by age升序,Order by birthday降序,请问咱是不是跟主人帮我设计好了,一楼二楼反了,那么假设你不在,所以列上面或者根本就没有A且带头大高挂了,那么fair sort产生,产生以后它又产生了两种算法,分别是双录排序和单录排序来,那么呢,这主要呢,非计算机专业的同学呢多一些。
11:26
没关系,你能理解就最好,不能理解你就照着我的最终的结论去用就OK,没问题吧?那么这些需要工作中更多的磨砺和总结。来先说双入什么之前,那么言下之意就如同说现在同学们,至少你们都快用的是spring4.3甚至SPRING5了,没谁再会去用2.5这个版本吧,就是一样。也就是说4.1之前使用的是双入排序,扫两次磁盘的数据干嘛呢?读取含指针和order by的列,对它们进行排序,然后扫描已经排好的列表,按照列表中的值重新从列表中读取对应的数据输出,注意。
12:10
你只要去用几次,好,大家都知道文件的磁盘ino是不是非常耗时,否则我们也不会永远用小表去动大表,最外面那个后循环必须是小数字,同意吧,那么现在你要两四。我能不能把这个IO降为一次,当然你说一次都没有,不可能吧,那么好,我们来,我们从磁盘。排列排序字段,再从sort buff法的这个缓冲区里面排序了以后,这样字盘读其他字段了以后呢,这就是双路排序,两次IO取一批数据要对磁盘进行两次扫描,众所周知IO是不是很耗时啊,所以说4.1之后,同学们,现在你们装的是都是稳定版的5.55.6了,我们出现了第二种改进的算法是吧?也就说就有点像MYSQL,弟兄们现在用的是不是默认都是DB,现在你们的排序word用的都是单路算法呀,好,那么这个单路算法既然是单,那么弟兄们计次好嘞,那么呢,也就是说从磁盘读取查询所需要的所有列,按照order by这个列在什么地方对他们进行排序,然后排序扫描后的列表进行输出,效率快。
13:37
避免了第二次读取数据,把随机IO变成顺序IO,换句话说是什么?我是不是可以少读一次IO啊?抬头如果偷鸡不成蚀把米以后,我本来要解决双路两次IO的问题,假设我现在一切顺利,我用单录一次就取到,是不是皆大欢喜啊?但设我百度行了,以后我要取多少次呢?
14:09
他的问题就是会比两次还要更多,这个时候就变成什么?以前你不变之前,我两次是不是不论多少都全部拿得下,现在你变了以后好,如果条件范围以内一次取下来,确实比4.1以前的双楼费用算法效率高,但最怕你偷鸡不成蚀把米,导致一次拿不完,是不是要拿多次啊,这样是不是又变得还不如以前的双路算法呀?那么什么样的情况下会导致单路算法折腾和失效呢?我们来看一下现在的问题,就是。我们结论和引申是什么概念呢?由于单路是后出的算法,总体而言是要好过路啊,就像Java里面之前是不是先有哈希table,然后又出了哈希map,之前用string buff法之后是不是有了string builder啊一样,但是用单路呢?有一个问题是什么呢?就是他能不能一次抓完,一次抓完是讲单路,如果一次抓不完是不是就坑爹啊,那么就变成了多路,性能反而不如双路,那么呢?这样的看在SORT8ER中还记不记得我们第一天的课读那个卖点,看我是不是说过MYSL配置文件里面有一个sort buffer缓冲区配置值大小啊,OK,那么方法B,后者的单路要给它占用很多空间,所以如果把所有字段都取出来,那么就有可能取出的数据总大小。
15:51
超出了索巴法的容量,导致每次只能取法容量大小的数据进行排序,要创建临时表,然后呢,多路合并,排完了以后再取缩半块大小的容量再排,从而导致了什么呀,这个时候是不是偷鸡不成蚀八米呀?那么什么概念呢?抬头比如说哈,我们那个说巴法那个值假设哈,就是两兆,你查一次的数据假设就像一个汽车的停车场一样,就是两兆,来了100辆车,是不是刚刚好啊,现在猛增,我都在这块等着你选,我来了500辆车,十兆,那么这个时候跟我讲,我最多是不是只能取两兆的数据,那么这样是不是两兆一次,两兆一次,两兆一次干出了五次,以前两次全部摆平,双路复用,现在你是不是单路复用,宣称的一次没有取完成,还多访问了三次。
16:51
啊,好,那么呢,所以说我们这儿一句话就是sort buff法导致的问题,那么我们的优化策略呢,是什么?怎么干呢?第一个是不是就是我们说的第四个SQL数据服务器调U啊,如果真是这个因为order所导致慢了,有可能你一定要主动联系GPA或者是经理问问他,我的判断是buffer缓冲区这个问题导致order慢了,我们可不可以把它调大点,那么到底到时候要调成多大?那么咱们是不是只能试着看了,OK,那么再来除了这个参数以外,还有一个什么maxl for sort date也请把它调大,那么到最终我们呢,来提高orderbi的查询速度的时候,有这么三个,一,不要用Le she,换句话说什么只要你加order by最好就不要用Le she。
17:51
嗯。听懂什么概念呢?因为你这个select的心哈,同学们,假设你只用十个字段,但是我这个select的心可能是80个字段,你跟我讲是不是就容易把so buffer缓冲区用满了,那么这个时候一用满了以后,大家看干嘛它呢就会变成什么?如果说查询的字段的大小总和小于这个,而且也不是这种大对象级的时候会用改进的算法单路,否则是不是就回到老路多路上面去了?第二个两种算法都有可能超出苏德巴法的容量,超出以后又要创建临时文件进行合并,就会导致多次IO,那么这个时候干嘛?单路算法是不是比双路算双算法还不如啊?所以说尽量少写select新,然后增大这两个参数来提高order bit的排序查询效率。就这三点清楚好。
18:52
那么完了以后,我们来看结合到这个小总结,才是我们全部的索引和order by的总结和查询要点,那么呢,同学们,我们一起来过一下,首先。
19:12
之前我们从开讲一直到explain,一直到索引失效,是不是一直为查询使用索引啊,那么刚才介绍了what抬头我们那个case啊,Table a那张表的case啊,这么几点一,我现在是不是让大家关心的是what by后面会不会产生fair,是不是,也就是说我们目前进入到了优化查询排序的最后一步,那就是为排序使用,所以第二步我们也说过,那个order by我们建的是age和birthday,我单独用age和单独用birthday是不是就会产生fair呀,那呢,所以说原因是不是我们的单路和复用算法的不同啊,那么呢,我们呢,到了第二步了以后,就三点,一是不是尽量不要用心,只要有order半,是不是用哪个字段说哪个字段呢?第三是增加S法和。
20:12
Max的长度啊,那么第四就是这一张表,我给大家总结好的,我们一个一个过一下来。1CIRCLEQ的两种排序方法,文件排序或什么扫描有序索引排序,那么也就是说文件排序是不是叫using fair so或扫描有序索引排序是不是叫using index啊?到这第二行能理解吗?第三行MYS能为排序与查询使用什么?听懂这意思了吧?我一键索引是不是先把我的数据排序?如果我这次排序查序也能用到,Order排序也能用到,是不是就是一举两得,一石二鸟啊?好,第三句话正更加充分的说明了我们的买色票的缩引是什么排序。
21:12
查询两层意思呀,OK,下面。又来这种题目了,好,来看看能不能用到排序的索引来。第一种情况,Order by能使用索引的最左前缀,什么概念呢?Order by a,带头大哥在不在,好能不能用,那么呢,这个呢,这个呢?可不可以啊,我说过你要么就是同生,要么就是同死,要么是同生,要么是同价,是不是通通OK,换句话说,看好第一种情况能用,我能使用索引的最左前前缀,是不是有这四种情况呀?坦白讲就说我得把ABC是置三个默认的顺序啊,同意OK,往下走,如果Y要使用了索引的最左前缀定义为什么量,前面我们做了一道题,我是不是特别还拿出来给大家对比说那个东西是不是有没有常量啊?好,大家看,如果最左前缀定义为常量,走order by能使用索引一种是什么?直接在order by后面,一种是你的这个带头大哥天生就要是个常亮,那么大家请看。
22:42
A产量order by bc能不能用,这块是不是说白了什么你你可能会说那杨个order by最好,是不是ABC可以是排序啊,但是问题是A你已经给了我一个常量,这就像是个毛的一个点一样的,那么相当于说排不排都一样的好那么那么是不是都是可以,那么一直到这了以后,大家可以看到我们什么注意the order by能使用索引,咱们现在说的是order by,后面就说白了,就是不产生fair so同了吗?好,再来看看同学们那假设永有不能用的呢?注意我们说过了,再往下看,这块是A那么呢,但是B后面是不是就断了,但是由于你的最左前退带头大哥比较猛,你这儿完了以后,我这儿是不是再给他勾搭上,相当于说这儿。
23:43
A是个常量,Order by ABC,一个常量是不是一样的,可以用排序,不会产生非要素,好,下面看看是吗?不能用的情况。第一种是不是升升降降降降升升跳楼机啊好,第二种带头大哥怎么样好,也就是说你这没A是下那种,我这就没A啊好。
24:15
怎么着,中间兄弟是不是断了?你就记着,只要外后面是个A的话,它就是个产量,你我的外头相当是不是个AC,中间兄弟断裂了,大家看这些口诀是不是从查询到排序全部通用啊好。不是说兄弟的问题,你是ABC,这个D跟你有毛关系啊,所以说D不是索引的一部分,那么干嘛,咱们是不是不好使啊?好,我们说过in是不是相当于一个范围啊,范伟的大哥不好使,大哥就像我们说的,都没有给我一个常量,没有一个定制,后面是不是就群龙无首啊?OK,那么呢,这张表就是word办写排序写系统里面统计分析查询模块查的快的唯一依据,听懂那么要求同学们将其刷图导入到自己本地的印象笔记或有道云笔记当中。
我来说两句