00:00
好,那接着的话呢,我们再看这个第五个点啊,说distinct的字段呢,需要创建索引啊,CTRLC。啊,过来。啊,这个接下来的话呢,其实有很多这个情况呢,我就不一定非得一个一个给大家去验证了,啊相应的这个验证的效果呢,我在这个课件里边也都有写,那很多这个点呢,大家也是能够理解的,所以咱们可以稍微加快一下这个节奏,好我们看这个点说第think这个字段呢,需要去创建缩引,那很多时候呢,我们需要呢,对这个字段呢,去做一个去重,对吧?那我们这时候有这样一个操作,说从我们这个学生表当中,我们去做一个distinct,呃,这个student ID啊针对他呢去驱重,那你要是没有这个索引的话呢,那我们就需要呢,至少你得先把这个相同的合在一起,然后呢再去驱虫,留下来唯一的一个,对吧,那这时候花的这个时间呢,举个例子是0.683秒,那如果说我们针对这个student ID呢,去创建索引了。那么创建索引以后的话呢,自然而然我们相同的这个用ID,在我们这个索引的这个B加数当中,是本身他们就挨着呀,那既然你挨着了去去重,那是不是就简单很多,那整个运行完以后呢,这个结果呢是呃,0.010秒,那这个时间的差别也是比较明显的。
01:07
这个大家应该都很能理解对吧?呃,因为毕加树呢,已经是有这个排序了,那你自然而然的order啊,Group啊呀,就非常的便捷。好,这个就不用多说了,然后看下边这个说这个多表join连接操作时,诶这个创建索引的时候呢,一些注意事项啊,这呢,你看我写了这样的一些信息啊,咱们把这个呢也我这么着吧,哎,CTRLCL一下粘过来。啊,这个在我们这个课件中呢,咱们也保留一份这个具体的一个描述啊,第六个点。乃第六个点。嗯,回来。加个星啊。好在这儿我们说明一下,说呢,我们在这个照的时候呢,说连接的这个表的数量啊,尽量呢不要超过三张,因为呢,我们每加一张表呢,相当于就多了一层嵌套的循环,那你这个数量级呢,都会做一个递增,那递增是吧,你一层呢就是N,两层呢就是N方,那三层呢,是不是N的立方了,哎,会比较严重的影响我们这个查询的效率。
02:07
其次的话呢,就是我们有这个外条件的话呢,建议呢,咱们在外条件中针对你这个字段呢,去创建这个索引啊,这个咱们前面也都说到过了是吧,尤其数据量大的时候呢,会有这个效果,第三的话呢,说对于这个连接的字段呢,我们可以考虑去创建索引,这个呢,也是提升我们一个查询的一个效率的点。啊,这个OK,注意一下,那下面呢,就举了个例子,说我们针对这个student in for和我们这个cos的话呢,诶我们这呢是有一个例子是吧,诶CTRLC咱们把它粘过来。那针对这个此时的话呢,我们说这个where name等于啊,咱们就考虑说这个过滤条件吧,针对这个过滤条件呢,我们看看是不是要加索引,看看这个性能的差别是有多少,那目前的话呢,咱们上面是不是有这样的一个索引吧。那我们还是先这样的去收一下执行。啊,走起,针对这个name的话呢,咱们现在是有索引的,那要是此时呢,我们要做个执行,那相当于是用上这个索引了,啊你在前面呢,加一个explain也可以去判断一下。
03:03
哎,来选中。啊,执行。嗯,这块呢,提到说cos ID啊,在我们这里边是BI啊,这个字段的话呢,在我们这两个表中都有,我们需要指明它来自于哪个表,那我们这呢,就给它重新做个命名。哎,这个我们比如就从这个S里边去找。那这个呢,也是S的,嗯,这个本身它就是是吧。然后这个Co name呢,是我们这个C里边去找的可以,哎,选中。啊,执行好,那这时候呢,我们看到呢,咱们选中的这个,所以呢,是不是就IDX杠内了啊没问题,大家会发现,诶怎么出现两条记录,那这个呢,主要是因为我们这有两个表,所以就出现了两个啊像我们刚才不是还提到这个嵌套循环的意思嘛。啊,相当于一个嵌套的概念啊,这个具体细节的话呢,咱们讲啊,下一章的时候呢,咱们再详细展开去说。好,我呢把这个呢,咱们先去掉,嗯,刚才呢,查询的这个时间是多少呢。0.001秒是吧。诶,0.001秒,好,然后呢,我们把这个name的这个索引呢,给大家干掉啊drop。
04:06
Index名字呢,叫这个。哎,这个on啊,Student。In。啊,选中执行,那我们这样呢,就把这个索引呢,给它删掉了,再去做一个受。瘦呢?没有了,那没有的情况下呢,我们再去做这样的一个执行。来,走起来。呃,大家看啊,我们此时呢,是不是0.227秒啊,诶同学说怎么都是这个一眨眼就出来了,对于我们人来讲的话呢,你这个0.001秒和0.227秒呢,似乎差别不大啊,但是对于我们这个,呃,系统的这个执程序的执行来讲呢,这个差别的倍数呢,是上百倍的啊,差别还是很大的。行。完事了,通过这个呢,我们想验证的就是我们这个V中这个过滤的一个情况,另外呢,关于我们这个cos ID呢,大家还可以呢,去呃给它呢去添加一个索引,对吧?添加索引,但是由于你看我们这没有加索引的话呢,这个已经数据时间非常短了啊,这个在我们当前这个题目当中,还是这个数据量呢,算是比较有限的,那我们这里边呢,只有咱加了100条数据吧,因为数据量比较小,所以呢,这个性能呢就不是特别明显了啊OK,那么大家呢,根据实际的数据量大的时候呢,也也可以考虑跟我们这个连接条件呢,诶加上这个索引啊,这里边要注意的一点是什么呀,就是我们这个连接条件当中这个字段,你比如说针对我们这个叫cos ID,在我们这个cos表中和这个student in表中,这两个字段类型大家注意一定要设成是一样的。
05:40
啊,比如我们这个字段是int类型,这个呢也要是int类型。那有同学可能会说说老师呢,我这个是in的型,我这个是war差型,我发现呢,查询的时候呢,数据也都能查出来啊,那是能查出来,因为咱们存在一个隐食的转换,比如这个靠塞呢,叫呃101,你这个靠塞呢叫101加一个单引号,它会呢,把我们这个字符串的隐式的再转换成我们这个呃数值类型,但是你注意这个一转换呢,我们就用了函数,一旦使用函数以后,我们这个索引啊,它就失效了。
06:10
那既然索引失效了,那你在查询的时候呢?就用不上,所以呢,那性能呢就会低,所以这块呢,咱们要求呢,类型一定一致的原因就在于我们要用上索引,那么这个失效的情况下,咱们在下下章当中,咱们针对性的一起会去说啊好过了再看下边这个说使用列的这个类型小的这个啊,创建索引。好,我们这块呢,也是带着占一下第七个。使用列的类型小的什么意思呢?呃,就是这个,你比如说我们这个表中呢,有这个相关的叫,诶或者说咱们在创建一个字段的时候呢,也可以这样考虑啊,比如我们有个字段叫ID是吧,这个ID呢,我们也想给大家去上面创建这个索引,那这个ID类型上呢,我们可以考虑呢,用就是满足实际情况的这个场景下,有T可以选,Me可以选,In可以选,Big in可以选啊在这些类型呢,都能够满足我们题面需求的情况下,那么推荐大家一定用这个类型小的。
07:06
这个类型小的呢,一方面体现为就是我们在这个创建表以后呢,添加这个表数据的时候呢,你占用的这个表空间呢,就会小一些,对吧?诶这是一个点,另外一个点的话呢,就是影响到我们在给这个字段上面加索引的这个情况。啊,为什么这么讲呢?你想想我们去,比如说你这个ID呢,它诶夸张一点啊,它还是个主键啊,那这个影响呢,就不光是你当前这个句素索引了,你想想我们创建的这个页的时候,呃,如果说我们这个主键呢,它占用的空间在这个页中的占用空间大,那你这一个页当中放的这个,诶这个像数据项呢,是不是就少一点,如果你这个ID呢,本身占用的空间小,那你能放在这个数据项呢,就大数据项大的话呢,是不是我们这个页中呢。呃,数据项多是吧,那我们的业主呢,能够放更多,那相应的这个数呢,就有可能它就更扁平,那我们的IO的次数呢,是不是就可以更少一些吧。对吧,诶能理解这意思,同时的话呢,如果你这个ID呢,它还是个主键啊,那这个影响呢,就不光是你当前这个索引了,还会影响到我们所有的是不是二级索引,因为我们这个所有的二级索引呢,在这个非叶子节点上啊,包括我们这个叶子节点上都还存放你这个主键的这个ID了,那你的空间要小一点的话呢,是不是使得我们这个二级索引呢,对应的每一项都小一些,那你相应的页当中存放的向量就多是吧,就可以有更高的这个高效的这个IO了嘛。
08:26
啊没问题啊行这呢,我们就说清楚这个点,然后第八点就像这个呢,理论上我们就能分析清楚的,咱就不用测了。说第八个呢,说使用字符串的前缀,我们去创建索引,诶这个呢,也是比较重要的一个要求。啊,很多同学呢,这一点呢,是之前没有接触过的,或者说呢,就觉得说哎有必要吗?那说明一下是有必要的。这个是什么意思呢?首先我们来讲这个字符串呢,我们说呢,要是很长的时候呢,它首先自己要占用很大的存储空间啊,那这个呢,咱们就忍了,因为你既然要存一个很长的字符串,那没有办法,那就是要存,那存就存对吧,占用空间大,那也得也得也得忍着,但是现在的话,我们去创建针对这个字符串这个索引的时候呢,我们就考虑一下,我们有没有必要呢,把这个完整的字符串呢,当成一个索引的这个值去做一个存储啊,为什么这么讲,你想想,如果这个字符串很长,我们要创建一个索引的话呢,但是你看我们构成的这个B加数在你这个,呃,非叶子节点上呢,我们就要存这个字符串很长是吧,然后到这个叶子节点上的话呢,你这个还得存,这个还很长。
09:29
啊,当然这个字符串一般咱们不会设置成主键了啊,你要是主键的话呢,那不光恶心你自己的一个缩引,还恶心了所有的二级索引,对吧?啊就不太理想怎么办呢?那我们这时候考虑呢,就是啊,诶你看我刚才说的是这个占用空间的事儿啊,另外呢,还涉及到一个比较的事儿,所以呢,好容易你创建好以后再去比较的时候呢,诶一个一个去比看啊是不是这个一样啊很长,比的时间也很长,对吧?诶所以不管空间浪费,然后呢,再去真正查询的时候呢,也会费时一些。啊,也会费时一些,这就这两个点,那怎么办呢?这个时候我们可以呢,取这个字串,它的前多少个字符来构成一个缩引,那你比如说我们这个例子,这个例子当中呢,我们这个dress呢,它的work呢是120,相当于呢,我们真是添加数据的话呢,还真有可能添加了很多这个dress,它的这个长度呢,比如达到100了,很多的达到100,但是我们现在创建这个索引的时候呢,我就只取你钱,比如说12个字符,我来构建一个索引。
10:25
啊,那这个呢,我们就把它称为呢,叫做前缀索引啊,那么这个好处是什么呢?那自然呢,就针对你上面这个弊端,第一个我们创建这个索引的话呢,这个字串因为你使用的比较短了,所以咱们在构成这个叶子这个这个节点的时候呢,我们占用这个空间呢,是不是就少了,原来你占120,当然可能不是120,这是可变的,你可能占了100是吧,然后但是呢,我们现在呢,只只需要你占12。那你占用的空间就会更少,那这是其一,那这个整个这个层级呢,可能就会更短一些,再者的话呢,就是我们在比较的时候呢,我们就只较比需要比,只需要比较你前12个字符就可以了,你原来那么长呢,比较上百个,那那花的时间会更多,对吧?那这里边儿大家可能会想想到一个问题啊,说我这要写12的话呢,是不是本来的两个字符串,你要是按照他们真实的去比的话呢,他们在前100个的时候呢都一样,后边的时候不一样了,但是你要是取前12个字符的时候呢,是不是意味着这两个字符串呢,他俩就都。
11:20
呃,按照索引去创建的时候呢,他俩就相当于是按一样的来处理了,在索引当中是一样的对吧。那一样就一样了,然后接下来的话呢,你针对这两个,诶这个都一样的,这个字符串你要找的还确实是它的话呢,他们下边对应的这个主键是不是就不一样了,诶主键不一样,然后你就分别呢去回表就完了,你看哪个是你想要的啊,通过回表当中,你看一下对应的上面这个字段的字符串,你看哪个是你真实要查询的,继续查就可以了。啊,这样的方式呢,去做这个处理啊,要注意好,那么这里边儿呢,就会涉及到一个点说,诶我们这个比如说周上的长度就是120,那我们这时候呢,到底是截截这个段的时候呢,截多少比较合适呢?大家会有这样一个问题对吧?呃,因为这个呢,实际上呢,就影响到我们这个区分,这个叫一个什么呀,整个这段呢,截的不合适呢,它有可能截的比较短了,那有可能这个截完以后呢,呃,夸张一点说呢,这个表中的这个字符创上全都一样了,那显然截这个短了就不太合适了,对吧?啊那该怎么办呢。
12:17
这里边我们可以涉及到这两个点啊,主要呢,思路来源来源于这儿,我们针对这个字段呢,比如来一个distinct的,我们再取个count,这就相当于是我们这个,呃叫什么,区别度有多少,如果所有的这个dress呢都不一样。啊,那我们这个呢,得到的相当于它是一个一。是这意思吧,好,那我们就可以这样来处理啊,哎,我们用这样的一个方式,Left呢,我们是上篇中讲到的字符串中的一个函数,那我们可以呢,取这个字符串的前多少个字符,对吧?那针对于我们这个dress呢,我取前十个,然后做一个distinct,然后再跟我们这看清呢,咱们去做一个除法,然后这块呢,查完以后呢,咱们是不是就能够看到这个具体的这个值是多少了,对吧?然后这个值的话呢,当然越接近于一是不是就越好一些。
13:00
啊,你要取了钱,诶不对,我是不是说错了。嗯,就是我们这个呢,完了以后的话呢,越啊越接近一的话呢,是越好的,对吧,那这块呢,就是看一下,呃,这几个比较的时候呢,你看看是不是他们的差别,如果都不太大。啊,比如差别都不太大的情况下呢,我们是不是就推荐呢,你截的这个要短一点了啊,越接近于一呢,那就说明呢,你这个区温度呢就越好呗。是这意思是吧,嗯,那你比如说我们这块呢,查完以后这四个呢,都呃非常的小,这个数非常就离非常的远,那这块你就再把这个数值放大就可以了。啊,就这样个道理,嗯,然后这块呢,我写了一个拓展,这就相当于实际当中的经验啊,这是阿里巴巴这个手册当中一个强制的一个规则,说在这个workar中创建这个索引的时候呢,必须要指明索引的长度,那它是一个必须没有必要呢,对全字段呢,建立索引啊,根据实际文本区分度呢,来决定这个索引的一个长度。那这就是我们说的这个区分度啊,那么这个区分度的话呢,呃,就是我们刚才说的这样的公式呢,做区分,那么从实际经验上来讲呢,我们这个长度呢,达到20的时候,这个区温度通常呢,就达到90%以上了啊,就接近于这个一了,那么大家呢,根据这个20呢,大家做个参照,那你就可以考虑呢,选的是我们这个段是不是就OK了。
14:16
OK,这就过了啊,然后接下来的话呢,我们这又引申出来另外一个问题啊,其实刚才呢,我也提到过这个点,比如说呢,我们就取前12个字符。在上边这里边儿,我们取了前12字符呢,造了一个索引,对吧,那我们现在呢,有一个叫order by。这个呢,我就想按照这个dress来进行个排序,那排序的话呢,我就想取前12个这个这个。这个这个数据那恰好的话呢,这前12个呢,还真都一样了啊,这个时候呢,会导致一个问题,就是说我们真正查出来这个结果中这个12个呢,有可能诶不是咱们所谓的那个order中的那个,恰好是最小的那些,能理解这意思吧,你比如说我们这个前12个全是A啊,这个前12呢也全是A啊,这个表中呢,可能前50个数据呢,它都是这个前12个都是A,然后这个呢,写的是这个123啊,这个写的是012。
15:03
啊,有可能人家在这个第50个呢,它写的是000,那你要是out by的话呢,相当于这个呢,是肯定要查出来,但是呢,你要是只取12个呢,构建索引呢,我们根本就没有机会呢,看到你后边13个以后的这个情况了,那有可能我们这个时候呢B呢,这个就不准了,查出来呢,并不会,并不,诶是咱们想要的那个一定是从小到大的这个顺序。所以说呢,我们要使用这种前缀的方式的话呢,就无法支持使用这个索引排序了啊,这个大家要小心一点去注意啊。好,这个呢,我们就过了啊,这个里边的一个点呢,大家要注意一下,在阿里巴巴中,这是一个必须的,那么我们作为一个非常重要的一个参考,下边这个呢,叫区分度高的这个散裂性高的这个裂呢,适合来这个,呃,作为这个索引。来,我们把这个点呢转过来。区度高啊,散力度高的这个适合创建索引,咱们上面呢,其实也提到了,是不是一个区分度的这样的一个概念啊,然后还有对应的公式,那这个区分度高的话呢,我们创建,所以呢也有好处,因为你一下子过滤呢,就能把这个很多不要的这个数据呢,是不是一下子就过滤掉了啊,这就它的一个好处,首先呢,我们看一个概念叫做这个列的奇数。
16:11
指的就是某一列当中不重复数据的一个个数,比如说我们某一个列当中有这样的一些值,一共呢是有九个值,但实际上呢,基数只有三个啊,只有三个呢,应该就258这仨是吧?258258这个基数呢是三个,就相当于你要in一下的话呢,就所有的二呢合并成一个,五呢是一个三八是一个就三。也就是说,在记录行数一定的情况下,列的基数呢越大。那该列中的这个值呢,是不是就越分散啊,列的基数越少,这个该类中的这个值呢,就越集中。比如说呢,我们针对这个学生表当中,我们有100万条数据,那么100万条数据呢,如果我们有个字段呢,叫做真的。真的是不叫性别呀啊,那我们有可能计算出来呢,假设啊,咱就是50万男的啊,50万女生,那么问这个呢,他的这个基数大还是小。这个记住的话呢,首先是不是就二啊啊,不是男的就是女的就二,那你可见二这个我们这个字段的话呢,他的这个区分度呢,就特别差。
17:05
啊,它要去温度差的话呢,意味着什么呢?如果我们要用这个where呢,咱们去写啊,这个真的啊比如说啊,它等于是一个女,哎我们用这个字段呢,去创建一个,所以呢就不太适合了啊这个花的成本呢,就实在是太高了,咱们在不太适合用的里边呢,其实也提到这个点,那这里边儿呢,是主张呢,是我们用哪个啊用哪个呢,找这种散烈度高的。是吧,诶区分度高的,我们适合去创建,所以你比如说每个学生的ID,每个学生ID都不一样,你可能还是个唯一的是吧,在我们这个毕加索当中是直接定位,是不是就找到那一条记录了。啊,比你这个真的长的好的太多了是吧,哎,就这样个道理。好,那使用这个公式呢,去区分这个计算这个区分度就好了,那一般情况下来说,超过33%呢,我们就认为呢,它算是一个比较好的一个区分度了,哎,大家呢,就可以考虑呢去使用。那这个值的话呢,越大越接近一,那它不就越趋温度好嘛,对吧,那你要拿主键这样的话呢,去做一个呃操作,那那那显然的话呢,是不是就成了一了呀。
18:05
啊对的啊好,这是这个点,然后下边这个点说使用最频繁的列呢,放在联合索引的这个左侧啊这个呢,就是我们所谓的叫最左前缀的原则。啊,这个是一个十啊。啊,这个十的话呢,诶啊在这啊,还有这个小兔。嗯,这个往前移一下,这个最频繁的列呢,放在我们这个联合索引的这个左侧啊,这个大家应该能明白我这个意思啊,呃,咱们其实前面讲这个group by和这个order by的时候呢,虽然咱们是分开写的,但是大家也能够知道,咱们在真正查的时候呢,是先找的他,再找的它,所以说呢,你最好有个索引呢,是不是涉及到就是呃,第一个字段的是他。然后你要是个连索引呢,你再放这个字段,你要反过来呢,先有这个字段,再有这个字段,零索引呢,我们这还用不上你这个索引哈,对吧?好,那我们再看这个啊,说使用最频繁的列呢,诶它其实是这样的一个场景啊,这个我就把这个道理呢给大家去讲一下啊,诶我就不具体去测了,比如我们这块呢,就查询一个星,诶from一下,我们这个叫a student INF。
19:10
然后这个where。啊。Where are?嗯,这个where的时候呢,我们查询的时候呢,可能会出现,比如说我们想查一下这叫a student ID啊等于啊,比如我就这块儿呢,写一个值啊,然后呢,And create time create time,时间稍微麻烦点,我再换一个字段吧,Course ID。啊,等于啊,这个具体的一个值啊,比如说这个啊100是吧,那么我们看到这个Y的时候呢,咱们就可以创建一个联合索引啊,那么联合索引,而且经常呢,我们这个字段是放在前面,那么咱们就创建联合索引中呢,你就先放这个字段,后放这个字段。哎,这个我们叫course。啊,再放这个字段,你要反过来呢,我们要是呃写的这个字段啊后写这个字段,当然这后边呢,还涉及到个点,就是我们会有一个这个呃优化器呢,优化的问题哈,优化的时候呢,他可能会给我们像这种场景的话呢,他可能会给我们去做一个,呃就先把这个呢,就是看谁区温度高了啊这个一说呢,就稍微复杂点,我们靠后点再去讲这个知识点哈,就是现在呢,我们想强调的点呢,就是说我们哪个字段呢,越常用啊越频繁,那我们呢,就建立一个联合缩引的时候,就把它放在最前边,因为呢,我们就能够优先考虑用到这个联合索引。
20:24
你要把频繁的这个,哎,不频繁的放前边了,这个频繁的这个我们放后边了,那理论上来讲的话呢,这个索引肯定是用不上。啊,至于说呢,优化器呢,是不是会给你颠倒,那是优化器的事儿。啊,这个注意一下啊。下边一个说在多个字段呢都要啊,这个创建索引的情况下呢,联合索引啊,优于单指索引。啊,这个大家能不能体会。11。这个这个应该没有了啊,那咱就写一个。咋写?啊,写一个这个补充啊,我这样说吧,在多个字段呢都要啊创建索引的情况下,联合索引优于单指索引。
21:04
啊,这不也可以拿我们上面提到这个group by和这个order by呢来举例,咱们当初呢,讲这个例子的时候呢,你单独呢,去创建这两个啊,单值的索引呢,其实也就只用了一个,跟你这个也没关系是吧?诶。那这里边儿呢,呃,如果我们在这个表中啊,首先呢,我们创建这个索引的话呢,后边也会讲不要太多,多了话呢,我们维护起来添加数据啊,每一个都要更新,是不是花的成本也会很多是吧?那怎么办呢?如果说如果说呢,我们能够建立一个联合索引。针对这个student ID,针对我们这个create time,针对我们这个course ID啊,我建完以后,那么我们这个呢,第一个是student ID,那你要是where当中呢,只写这个四顿ID了,实际上呢,我们也能够用上这个索引。啊,也能够用上这个缩引,然后呢,你要是where呢,有这个ID啊,后边呢,还有这个create time,哎,这个呢,也能用上这个缩。哎,你好,后边还加了一个叫这个。嗯,Create time,还有这个叫Co ID啊,也能够用上这个索引,相当于我们这个联合索引呢,它的这个呃,使用的频率是极高的啊,就不用了,我们这块你去建好几个单单独的一个索引了,是吧,建一个单独sid的,针对这个cur time的,针对coid的,或者说呢,两个呢,再合一起建那么多,其实可能还不如我们建这一个呢好使。
22:16
啊,所以说我们建立联合索引呢,叫优于呢,你去创建这个单值索引。啊好,这是这个情况,然后最后的话呢,这块,哎,我们说一个这个限制索引的一个数目,我们在这么多种情况下呢,都建议大家呢,或者鼓励大家呢,你去创建这个索引在相应的这个字段上是吧,但是的话呢,我们也要达到一个平衡,哎,它这个双刃剑也不要太多啊,我们通常呢,限制每张表上的这个缩引数量呢,单表不要超过六个。啊,原因呢是这样,首先的话呢,你每创建一个索引呢,都要占据碎片空间啊,索引越多空间越大,尤其你数量越多的话呢,这个索引呢也会越大啊,甚至有时候这个索引你要见得多的话呢,它占据的空间呢,是要超过我们存储的数据占据的空间的。啊,这是一个第二的话呢,就是所以呢,它会影响我们是不是天山改的一个性能啊,啊,因为你在天山改数据的时候呢,我们凡是影响到的这个数据对应的索引都要同步的进行一个修改啊,要调整的这个时间呢,会更长,造成一个负担。
23:13
啊,这是一个,诶第三个点的话呢,有可能大家会想不到啊,就是我们在针对一个表当中,如果说我们创建的这个索引呢,比较多啊,比如我们通过这个show index去查看的时候呢,这呢不算多啊,如果你要创建这个索引很多啊,你说我字段多,所以我索引就多啊,除了我们上述两个问题之外呢,第三个问题,咱们再写一个具体的一个啊,这个查询语句的时候呢,前边比如说我们加plan,这个就是查看这个的执行计划。那查看执行计划的话呢,大家你会发现呢,他在,呃,这个我再写一下啊。And explain。大家的话,你会发现呢,我们这里边有两个字段,一个呢叫做possible case啊,一个呢叫case,这还是个复数,我们在这个位置呢,它会罗列出来好多的这个有可能使用的这个缩引,然后呢,这个优化器呢,它会根据一个成本分析啊,最后呢,选择一个适合的K作一个索引,作为我们这个真正执行的时候的一个计划,那么好了,你想想你这个索引要是多的话呢,我们这块呢,呃,液化器在判别他们花的成本的时候呢,是不是多判别的。
24:18
呃,这个占比的机会就要多一些,花的成本是不是就要更高一些,你比如说原来需要比较俩,那每个测一下就行,你现在呢,有十个,那十个呢都得比较一下,看看谁最节省成本,然后选择其中一个啊,那肯定是要更累一些,那相应的我们花的时间呢也会更多一些。啊,就是相当于给我们这个优化器呢,造成了一定的这个负担啊OK啊这呢,就是我们说一下在哪些情况下呢,要添加索引啊,以及呢,我们的一个注意的点。
我来说两句