00:00
好,那么接下来的话呢,我们看一看这个诺DB这个引擎当中,这个被加数所引它的一些注意事项啊,这呢我列出来了三个点,第一个呢叫根面位置万年不动,第二呢叫内节点中目录项呢记录的唯一性,第三个呢叫一个页面最少呢存储两条记录,那把这三个点讲完以后呢,我们对于这个B加数呢,才有了更为全面的一个理解和认识啊,也就是呢,大家呢,呃不要呢,在我们讲完这个诶3.3的呃这几个概念之后呢,大家直接呢就就就说我对这个B加数呢,了解的非常透彻了啊,直接呢开始跟面试官呢去PK啊去砍了啊先别去啊,这个时候呢,你过去砍的时候呢,还是有一些这个劣势的,那把我们这个3.4呢补全以后啊,你再去找面试官去聊啊,这时候呢,你就更有底气一些。那其实呢,我们为了刚才呢,在呃演变的时候的方便,我们对这个真正这个B加数在生成的过程当中啊,做了一些这个呃特殊的处理啊,这个所谓的特殊处理呢,就是我们下边呢,要重新的给它呢,叫拨乱反正啊,那首先呢,第一个点呢,就是我们这里提到叫根叶面呢位置万年不动,哎什么意思啊,哎大家你看啊,咱们上边呢,在生成这个皮加数的时候,比如咱们就以这个。
01:14
诶,最初的我们生成的是不是这样的一个B加数啊,这是一个居束索引呢,对吧?当初我们是怎么讲的呢,咱们是先有一个这样的一个数据页,然后又有一个数据页的时候呢,说我们这块呢,得用一个目录项的页了,对吧?然后呢,诶这块再来再来,然后这块呢,诶不够了,诶我们又又有了一个目录项的一个页,有两个目录项的页的时候呢,发现呢,这时候又不够了,我们又生成了一个上层的一个目录下的页,相当于我们当时在演变的过程当中啊,是不是由下而上的这样一种方式,对吧?而事实上呢,我们在创建一张表,往这个表里边去添加记录的过程当中啊,咱们不是这样的一种方式,而是呢,自上而下的一种方式。诶,就是这样一个过程,我们造了一张表,然后呢,当我们往这个表,就是当你造完这个表的时候呢,首先呢,我们在底层这块呢,其实对应着有一个,呃,咱叫一个根叶面吧,哎,就是这个呢,是用来存储数据的,诶有同学说说老师你这个呢,是属于我们的B加数里边那个叶子节点呢,还是相当于非叶子一点,哎,我们叫内节点的来注意一开始的时候呢,这个位置其实就是来存放我们的具体一条一条数据的,说白了那就是叶子节点对吧?那么当我们往这里边添加一条记录,添加一条记录,添加三条记录,假设呢,我们这里边儿呢,就只能放三条记录,对吧?那这三条记录呢,自然而然的就放在这儿了,我就还以这个竖的方向呢来放。
02:32
那就只能放三条记录,当我们在放第四条记录的时候呢,我们这里边是不是就盛不下了,那盛不下的时候怎么办呢?注意不是咱们上边讲的那个思路,咱们这块呢,再开一个数据页里边放一条,不是这样子的,那是怎么样呢?我们会把这三条记录呢,复制到一个,诶这个数据页当中,哎复制过来,那是不是就把它们就哎就复制有点胖了啊拿过来了,拿过来以后的话呢,我们这个位置的话呢,其实呢,就让他去充当哎我们所谓的这个目录像的页了。
03:01
什么意思啊呃,我们把这三项呢复制到这儿了,我们是不是要加了第四条记录啊,这第四条记录呢,我们默认假设呢啊,它的咱们这儿创建这个句数索引呢,呃,那么比这三个主键值呢都大,那我们是不是就再开一个哎这个页是吧,哎属于一个页分裂了啊我们呢,把第四条题中你就放在这儿,那如果说呢,你这个主见这个值呢,比这其中的有小的,那你这块呢,该移动呢在移动。对吧,哎,就相当于是位置的一个转移,OK,那么在这种场景下呢,我们有两个是不是数据页了,哎,那这时候呢,我们这个位置啊,还是它只不过呢,这时候呢,它就不充当诶我们存储的叫诶数据记录了,而是呢,存储我们这个目录结构啊换个颜色吧,就把我们这里边的这一条记录最小的是不是就放在这儿了,然后这里边儿这个最小的就放在这儿了,那就这样子的,然后随着呢,我们这里边儿啊,你创建,接着呢,再去添加数据的话呢,诶再从这块过来,你看该往哪块添加,那就添加了,对吧。好,那么随着我们这个越来越多的话呢,诶我们这里边呢,相当于这个呢,放着放着是不是就满了,放了满的时候怎么办呢?我们这时候呢,你再去复制一下,把这里边儿这个呢放到这儿,相当于我们这呢复制出来的这个呢,相当于就是个目录页,诶目录项构成的这个页了,然后呢,你这块呢,需要呢,在新创建一个目录项的页,你就再创建一个,然后这块呢,是不是里边就记录,哎你这个里边的这个最小的和这个里边最小的还放到这儿,这个放到这儿。
04:21
诶能看出来这什么意思吧,就相当于我们最初的时候呢,只有这一层,然后呢,这一层的时候呢,就充当的就是我们存储存储记录的这个数据,诶当你这块呢,一旦不够的时候呢,复制完以后呢,它就变成了我们目录项,哎构成的这个页了。啊,然后呢,诶目录下列构成页上存满的时候呢,你再呃去这个这个复制,呃,然后它呢,就是始终作为我们有多层这个树形结构中的这个哎根节点出现的,哎,我们这个位置呢,是始终不变的,哎这就是我们所谓的叫根叶面的位置啊,万年不动。哎,这呢,具体的描述过程呢,是放在这儿的,大家应该能听得懂是吧?哎,应该能听懂啊下来的话呢,你可以再结合这个文字呢,再做一个理解就可以了,那么第二点的话呢,我们叫那几点中目录项的这个记录的一个唯一性。
05:08
哎,目录像记录的一个唯一性,这个呢,我们是针对于谁来开刀呢?啊是针对于我们,比如说这个非聚速索引。啊,非旧作啊,就是我们说的这个吧。那这呢是我们说一个二级索引对吧,这个二级索引的话呢,针对于它呢,我们来进行开刀,相当于这个呢,在我们真实底层存储的时候呢,诶还跟这个呢,稍微有点区别啊,这个呢,就是来说我们这个第二个点的举个例子,比如说呢,我们还是拿上面说的这个C1 C2C3这三个字段呢,所在的这个表为例,比如说呢,我们现在往这个表中呢,添加这样的几条记录啊,第一条,第二条,第三条,第四条,那么这几条记录当中,哎,我特意呢,诶这个造的特别一点就是此时的这个C2这字段的值呢,全都是一。那我们按照这个C2这个字段呢,去创建一个这个二级索引,那么大家呢,你会发现呢,是不是就长这个样子了,按照我们上面的思路来说,我们在这个叶子节点上只放这个C2和是不是这个主键的这个值啊,哎,我们这个位置呢,是不是只放这个C2,是不是还有你这个下边这个叶的这个叶号啊,那就会出现这样的场景。
06:12
那么在这种场景下。这个没问题是吧?在这种场景下呢,比如我们现在要添加一个数据,这个数据呢,叫做91C,这个九呢是C1啊,这个是C2,那你看我们这条数据呢,在添加的时候呢,那怎么着呢,你看一进来你这是一,这是一,然后呢,我们添加这个C2呢,还是一,那么接下来去问,那你说我们这条记录呢,应该是呃,撇到这一边上去添加呢,还是撇到这边去添加呢?那是不是就懵了啊,因为呢,这里边我们没有办法,是不是区分出来的,哎,这两条记录到底谁跟谁有什么区别,就是这时候你得把这个一号先扣除掉是吧,扣除掉这个页号以后呢,发现呢,剩下的是不是都一样啊?那也就是说呢,有可能你这还是一个联合索引啊,就是呃,C2与C3联合在一起的索引,那你发现这个C2一样,C3也一样,完全没有办法区分出来这两条记录。
07:00
啊,那这时候呢,就不合适了,那我们就不知道该往哪个,呃去找这一支呢,还是找这一支呢?哎就判断不出来了,那怎么办呢?诶我们此时呢,要求就是那节点,那也就是我们所谓的非叶子节点。要求呢,这个诶,那节点当中目录项的记录呢,是唯一的,那咱们暂且目前的这种场景呢,是不是就不唯一啊,有同学说说老师你这有四跟五,是不是加上四跟五就唯一了,哎,这个页号的话呢,咱们不能算在里边啊,你算完页号呢,永远都是唯一的了,除去这个页号之后,哎,你看一下我们这时候呢,你是呃以谁为这个索引创建的这个必加数,那你就看一下它是不是唯一的,显然这时候是不是不唯一,那就不行了,那怎么办呢?那这时候我们要保证它的唯一,那加个C3就唯一嘛,那万一C3要也一样怎么办呢?啊,那时候加谁呀,是不是加这个主键呀。哎,加了一个主键,因为主键的话呢,自然而然它的这个值呢,都是唯一的。那所以说呢,我们还是上边的这几条记录,我们重新呢,构建一个二级索引,那就是这样子的啊,这个是啊11131517,这个呢,跟我们上面没有区别,关键呢,就是这个哎叫非叶子节点。
08:08
那么在这个非页的电脑当中,大家你会发现呢,诶,刚才我们是有这个幺幺,然后有这个四,有这个五,我是不是又把这个主键呢,也添加过来了。那么此时呢,除去我们这个页号,那么这里边儿的这条记录跟这条记录呢,他们是不是都是唯一的呀?啊,因为加上主键呢,肯定就唯一了,那么在这种场景下呢,我们把这条记录呢,添加进来叫91C,那就不迷糊了,首先呢是一,那这个都是一,然后接下来呢,这个是九,那这个显然呢,这个是不是就从我们这一支上呢去做添加了。啊,那这样就不迷糊了啊,这个呢,就是真实当中我们的二级索引,大家注意二级索引呢,我们在这个内节点当中,它其实也保存了我们的主键的这个值。啊,也保存了主键值,所以我们上面呢举的这个二级,所以呢,这个其实是算是一个不太完整的一个啊,注意那我们都还处在这个迭代,迭代的这个过程当中啊OK。
09:01
那么基于咱们刚才说这个第一点啊,辉辉再啰嗦一句,就是大家呢,如果去面试的时候呢,呃,你说面试官,面试官如果说呢,说诶你能不能把这个毕加数呢给我讲清楚,大家那个在讲的时候呢,诶我建议呢,你可以按照咱们上边迭代的一个过程,是不是从下往上去说呀。那就是按照我们这个图,你可以呢,从下往上去说对吧,但是呢,你也要告诉他说我这块呢,是为了你理解的方便,我从下往上这块呢,就相当于是一个抽取的过程,对吧?但是事实上呢,我们在呃生成这个呃聚素索引的时候呢,我们实际上是先有这个根节点的。啊,然后呢,你再给他呢,把这个话呢,再补充一下啊就可以了。啊,所以你一定不要呢,这样从下往上去这样去说,那面试官如果问你说真实的过程是这样子吗?你说是的,那就坏事了。啊,那就跟我们这个第一点呢,就不符合了啊,这个注意一下。好,那么第二点的话呢,我们就也说清楚了,那么第三点的话呢,说一个页面呢,最少呢要存储两条记录啊,这个说呢,诶这什么意思啊,诶这个都不用多说啊,简单一说就能明白,你想想我们这一个节点你要存都存储这一条记录呢,再往下呢,还是一条的,这有啥意义啊,最起码你不得存俩,诶最起码呢,你得有能力去存俩,然后这块我们得是不是得出来一个二叉树啊。
10:14
对吧,诶这个呢,就一说就能明白啊,那这里边儿的每一个数据页呢,我们如果看成一个节点的话呢,大家你想象一下,是不是就是我们最初啊讲这个推演之前的时候呢,你看是不是就具备这样的一个特征啊。大体上的话呢,是有点类似的,那只不过这块呢,这个二叉搜索数呢,比较简陋一些,对吧?诶我们这里边儿呢,每个节点呢,是一个数据链里边呢,存储的是多条记录。啊,多条记录啊,而且呢,这倒也不是说这个是比34小的,而是呢,我们这里边儿第一条记录,记录的是我们这里边恰好是不是那第一个那个位置的那个数据啊,啊这个注意一下。好,那么这样的话呢,咱们就把这个16DB当中B加数这个注意事项这三个点呢,我就说完了。啊,理解一下好,那么接下来的话呢,我们再看一看这个my some当中这个索引的一个方案。
11:04
诶,咱们上面讲的都是no DB,咱们说的这个索引呢,都是在这个存储引擎当中来实现的,所以呢,我们讲这个,所以的话呢,必须要依托于具体的存储引擎,上面呢,咱们说的都是inno DB,下面呢,咱们来看一看这个MYS当中它的这个方案,首先呢,我们来指明这个,呃,Betra,我这写的叫btra了,其实这个呢,就是我们所说的叫B加数。啊,有同学呢,可能提前预习过哈,说老师不对吧,这个B加数的话呢,是B加tree,然后呢,还有一个叫btra啊,啊注意在官方当中就是MYSQL这个官方当中,它要是凡是写到这个btra的位置啊,我们理解为就是比加数。啊,就是人家没有说这个B数的概念了,是咱们呢,在这个讲的过程当中,国内呢,通常我们就说还有一个叫B数呢,是吧?哎,这个呢,这样写,其实理解的就是B加数啊。这个B加数的话呢,在MYSM当中,DB当memory当中,他们都是支持的,诶注意都是支持的。
12:01
OK,然后呢,这个memory呢,只不过说它默认情况下呢,它不是这个A毕加数的这种索引,而是一个叫哈希索引啊OK,然后这俩呢,虽然说都支持呢,但是他们呢,具体的话呢,也是有一些区别的啊,那区别是什么呢?就是这个MYSM当中使用这个贝加数呢,它的这个叶子节点,这个data域啊,它存放的是数据记录的地值。而我们这个in度DB当中,叶子结证存在是什么呢?那这个呢,就得看你是索引还是非居索引了,对吧?哎,这个呢,诶就是我们上面讲的这个内容,那么接下来话呢,我们看一看这个MYS当中它的一个原理。那说到这个MYSM当中的原理啊,我们就得需要呢,跟咱们前面讲的这个数据目录呢,这个诶相关了啊,所以咱们前面讲讲的这些内容啊,诶都不是完全没有道理的啊,咱们呢,慢慢的就把咱们整个呢,系统的一个拼图呢,就拼好了啊,所以设计这个课啊,其实是最有讲究的,对吧?来咱们看一下啊,我这块呢双击一下。
13:01
做一个复习,呃,我那CD,然后呢,呃lib下载这个MYSL,然后呢,LL一下,我们接着呢去进入一下啊,咱们的DB test1好,然后在LL,那么在我们这个DB test1这样的一个文件目录下呢,那这个大家其实一看呢,就知道我这个EP3。啊,Em m3这样的一个表,咱们使用的是不是叫MY这样的一个存储引擎啊,呃,你会发现呢,在8.0当中,呃,咱这叫s Di,在5.7当中的时候呢,它就叫这个FM,嗯叫F2M了是吧?啊这个呢就是存储我们算是这个表结构的啊然后下边的话呢,你会发现使用这个MYS的这个呃表的话呢,这个这个存储引擎的话呢,它底层这个结构是用来存储数据的表数据的这个呢是用来存储我们的,是不是表索引的呀?诶它是分开的。而对于我们这个使用印度DB的话呢,呃,它是这个数据和我们的索引是合一的啊,这个咱们前面都知道了,对吧?行,那么回过来。
14:04
回过来啊,那首先的话呢,比如我们提到一些数据,这个数据的话呢,它是专门的啊,就是看到我们刚才提到的叫点MYD这样格式的文件当中去存储我们这个表中的这个数据啊,一条一条的去存,注意这个时的话呢,假设啊,假设我们这个呃,C1呢,是咱们这个主件啊,正常来讲呢,我们这个顺序呢,是不是都是按照主键递增的顺序呢去存的对吧,那也有可能呢,我们这块添了一条记录,假设我下边就添了一条叫三。是吧,哎,这就第一条记录,显然之前没有过三,我们这个天手动你要写个三是不是也可以啊,那这时候还要排序吗?注意就不排序了。啊就不排序了,就是完全的按照我们这个添加的一个顺序呢,诶往下呢去依次呢去写到我们这个文件中啊就OK了,不进行排序啊,这个大家注意一下。那这块呢,把数据呢,是不是就存放到我们类似于这样的一个结构中了,对吧,然后的话呢,我们是不是要创建这个索引了呀,诶好,那从这个角度上来讲,那我们前面讲印度DB的时候呢,提到了说句索引是不是索引及数据,数据及索引啊,他们是合一的,那在我们这里边显然呢,是不是数据跟索引是分离的呀,哎,对,是分离的啊。
15:16
那其实呢,我们提前说一下,就是MYS当中啊,它是没有句数缩引的。啊,它全部呢,其实都可以理解成呢,叫二级索引。哎,都叫二级索引啊行,那么我们在这个my s some当中啊,哎,我要提到二级索引呢,大家其实就哎稍微有这个感觉了啊,那我们跟前面那个二级所引呢,就有点类似了,这个这个这算是比较底层的这块了,呃,算是叫叶子节点对吧,叶子节点中那记录的你看这是,呃,这咱们是以这个C1为例啊,进行的这个搭建这样的一个缩引,这是15 18,二十三十四十九,50,然后呢,这块也是抽取,这里边取最小的就是15呗,这个最小的是20,这个最小四19,然后这仨里边呢,你再取一个就是15,那这块还有其他的我们就没有罗列展开了,那么在我们这个叶子节点当中,它这个位置记录的。
16:04
哎,只是我们这个MYD这个文件当中存储数据的一个地址,那通过这个地址呢,我们是不是就找到你对应的真实的这一条记录了。啊,就这样子是吧,那所有的这个MYSM当中,这个索引呢,全都是这样的结构,它没有句数索引和二级索引之说,那我们可以理解成呢,都是叫非居素索引的啊,因为呢,你这个数据呢,跟我们这个缩引呢,是不是分离的呀?哎,分离的我们就叫做非局促的了。啊,就这样来理解。而我们这个DB当中呢,那就你要是速索引呢,这块就放真实的数据,要非索引呢,这块放的是不是主键呀。哎,OK啊行,那这块呢,我们把这个MYSM呢,就算是说清楚了,它的索引文件啊,仅仅保存数据记录的地址。啊紧行,保存这个地址行,然后呢,我们这张图呢,那咱可以理解成呢,是针对于咱们这个COLUMN2呢来搭建的,那你看我们这个是在COLUMN2上构建了一个二级索引,对吧?那你就是把这个字段的话呢,诶,我们相应的那几个有一个排序吧,啊在最底层这块呢,就是五二十二啊34 77 89 91,诶就这样的一个方式排的,然后这两个里边呢,挑了一个小的,这里也挑小的,这个挑小的,然后这三里呢,再挑个小的,啊下边这个呢,也一样类似啊然后呢,在这里边呢,我们仍然是记录你这个在底层文件当中存储的一个地址值。
17:23
所以呢,不管呢,你是针对于我们,比如说这个C21是主键,还是针对我们这个C12呢,一个普通的字段,咱们建立的这个B加数其实都是啊,最后都存储的是地址啊,所以呢,都算是非句数索引。啊,这就说完了,那么接下来的话呢,我们针对于他们二者呢,做一个对比,说MYSM这个索引呢,都是非居促的啊16DB当中呢,是包含一个居住索引的,它们是不同的。那一度D比中是不是一定会有个局组缩应啊?这句话对吗?啊,显然是对的,对吧?啊,因为我们这个数据及索引,数据及索引,索引及数据,这里边儿索引呢,就是说的句促索引。
18:02
好,那么这二者的一个区别,这四个点呢,其实大家应该也能一看了,应该就能明白啊,在印度DB当中啊,我们这个需要通过主键呢进行查找的时候呢,就用句子索引就行了,一次就完事,在MYS当中,由于没有句子索引,所以呢,我们是不是一定要进行这个回表操作呀,那此时这个回表呢,其实我们就理解成说这呢是一次查找,然后这个根据地址呢,再找到我们这个MYD这个文件啊这个呢就算是第二次了,所以把这个过程呢,我们也称为呢叫回表了,诶相当于呢,是不是一定会回表,对吧。再者这个DB的这个数据文件本身呢,就是索引文件,而MY当中这个文件和数据呢,是分离的啊,这个咱们刚才呢也已经看到了啊,确实呢是这个分离的一个状态啊,这个我们就相当于能够去证明对吧?然后第三个点的话呢,说in DB的非居组索引的这个data存储的是这个主键值,而MYS呢,存储的是地址啊,刚才已经说过了啊。然后这个诶这个点大家注意一下,说MY中这个回表操作呢,是十分快速的啊,因为呢,拿着这个地址的偏移量呢,我们直接呢去文件中去取数据就可以了,而反观轴DB呢,它需要呢,获取主键之后再去居术索引里边去找这个记录啊,虽然说不算慢,但是呢,呃,比不上我们直接去地址中去找,这个能理解吗?
19:17
啊,我们这儿呢,是不是直接呢,就找到你这个对应的这一条记录了啊,直接取出来就OK了,而我们上边的话呢。啊,这个得往上翻一翻。诶,往上翻一翻,嗯,咱们翻到行,就拿这个来说吧,呃,上边这块的话呢,你比如我们找这个C2是四的,咱们找到四的话呢,假设以这条为例,我们找到这个四对应的CE1是一,我们是不是还得需要翻回到那个去速索引里边呢?接着从上往下再走一遍,找到那个C是一的那样一条记录,那显然的话呢,又要整个又走一遍我们的这个居促索引是吧,而我们这个诶MYS的话呢,直接就找到你底层的这样一个文件地址,找到这个值就OK了,显然呢是效率会更高一些,对吧。
20:01
然后下面的话呢,说in DB呢,说一定要有这个主键啊,当然这里边呢,主要提的是我们要有这个主对应的那个索引,你要没显示指定呢,它就默认给我们指定一个,这咱们前面说过了,而对于这个MYSEM来讲,注意它是可以没有主见的。它可以没有主见,因为它无所谓聚素和非聚促了,数据呢跟我们这个,所以呢也是分离的,那你就爱怎么着怎么着是吧,诶所以这块呢,就是它呢没有要求有主见,但是呢,我们为了查询方便哈,咱们一定呢也会针对于这个,呃,存储引擎是不是针对相应的字段去构建索引啊。啊,注意啊,虽然说不一定说他要有主见了,但是我们一定要哎,构建索引啊,为了提升我们查询的一个效率嘛。OK,好,再往下看,那这块呢,相当于是一个小结了,那了解了不同的存储引擎的实现方式啊,对于我们去优化,所以呢是有帮助的,比如说你看这只是两个非常小的点哈,比如说呢,针对于这个音DB来讲,咱们建议大家呢,呃,在主键这块呢,不要给这个主键设置过长这个字段。
21:03
啊,为什么不建议设置过长的字段啊?啊,因为你想我们这个聚素索引也好,非居素索引也好,尤其是这个你像非聚素索引,我们在这个内节点和这个呃叶子节点当中,是不是除了你比如说咱以C2呢,构建的这个非基索引,然后你这个C1呢,是不是在这里边也得有,在这也得有,你要是这个呃C1这个字段呢,还特别长,因为咱们说了一个数据页呢,是不是只能是有,诶默认16KB了,你要每个这里边呢,都放咱们这个主键了,那你想想这个呢,如果它特别长,是不是导致我们这里边放的这个记录数就会少啊,那记录数一旦少的话呢,那你这块呢,自然而然,哎,你这个层级呢,有可能它就会高一些是吧。啊,就是存放的数据少了,那显然呢,这个效果就差一些嘛。好,那下一个说呢,诶,咱们在使用这个主键的时候呢,嗯,在设置的时候呢,如果你要用非单调啊,这就是咱们中学学习数学的一个概念,比如说非单调增啊,非单调减呀啊,或者就叫递增或递减呀,是吧,这样的概念啊,哎,如果你要是用非单调的啊字段作为主见,在印度DB当中不是一个好主意啊,很显然,那你要是呃中间呢,去添加一些数据,这个主见呢,比之前的还小,一会儿又比它要大,导致我们底层这个。
22:17
呃,句素索引,那是不是翻来覆去的需要进行这个页分裂是吧,进行这个记录的一个转移,这个呢,效率是非常低下的啊,这个我一说呢,大家应该都明白这个点啊,就过了啊。然后最后呢,我们再提一下关于索引的一个代价。啊,那说任何事物呢,还是那句话啊,都有两面性,我们使用索引呢,目的呢,是能够提升我们查找的一个效率啊,包括我们添加的时候呢,也是基于索引呢,去添加到底层这个比如说居素索引当中是吧?诶这个添加数据呢,也需要考虑这个居索引呢,那么好处呢很明显,那么缺点有没有呢?那自然而然也是有的。呃,正是因为它有缺点呢,所以我们后续呢,再给字段设置索引的时候呢,我们要想清楚,不是说呢,一上来就加啊,加了以后呢,有可能没有好处,只有缺点,对吧,那么这个缺点呢,主要体现在这个空间上和时间上,空间上呢非常简单,我们只要呢创建一个索引,它是不是就会帮我们去创建这样的一个。
23:11
呃,对应的一个文这个这个输页是吧,你比如说我们针对上面提到那个CR字段,需要创建一个索引,那这时候呢,我们是不是得有这种输页啊,目录页啊,是不是帮我们去搭建这样的一个索引啊,这样的一个必加数,而我们这里边凡是涉及到这个页的时候呢,它的大小呢,都是16KB,只要呢,你需要搭建一个针对某字段或者某几个字段的联合索引也行,那这个笔加数呢,它涉及到数页了,我们就需要呢,占据底层的存储空间,对吧。哎,甚至有可能还比较大啊,就是你建的索引越多,那底层的占据的存储空间呢,也自然而然就越大。那第二呢,就是时间上的一个代价啊,这就是我们前面提到的,咱们要进行这个增删改操作的时候呢,咱们是不是需要还在维护你这个索引的一个,呃,比如说逐渐的一个递增的一个这个这个情形,对吧,那这时候我们就需要呢,进行一个呃记录的一个移位,页面的一个分裂,甚至呢,有些我们要删除一些数据的话呢,我们还需要呢,进行页面的一些回收,那这呢,都需要对我们这个索引呢来进行维护,那维护的话呢,自然而然也需要花时间。
24:12
啊,会影响我们的性能。啊,这就我们说的这个问题啊,然后下边说一个表上呢,索引创建的越多,就会占用越多的存储空间,这是空间上讲的,在增删改记录的时候呢,性能就会越差,这是从时间上来讲的,为了能够建立又好又少的索引,我们需要呢,学学这个,这些索引呢,在哪些条件下呢,呃是起作用的,那这呢,其实对应的就是我们接下来啊要讲解的这些章节,咱们呢,在。这个呃,讲完第六章,该讲第七章了,是吧,在这个第八章当中,咱们会谈一谈在哪些字段上啊,咱们适合呢,去创建缩引,在哪些字段上呀,不适合创建索引啊,因为我们要是不适合创建索引呢,你额外创建了,它其实在维护上呢,反而到花这个精力对吧,时间空间上都不合适,那另外一个的话呢,我们再来谈一谈这个,所以呢,在优化的时候呢,呃,你加上索引呢,但是由于我们的一些错误的写法,导致我们这个索引呢会失效。
25:08
哎,这个呢,也是我们谈到这个优化的一个必须掌握的一个点,我这儿呢,罗列出来了这个11种这个情况啊,那么跟面试官聊的时候呢,你可以随便呢跟他去看对吧,OK。好,那么这呢,我们就先把这个点呢,先说到这儿。
我来说两句