00:00
好,那么接下来的话呢,我们再要讲解呢,就要说这个第六章叫索引的数据结构啊,你会发现呢,我们第六章呢,和前面这个章节呢,似乎呢,有些不同了啊,就像大家上中学的时候呢,呃,咱们读这个课文,通常老师是都要画这个段落是吧?哎,这几个段落呢是一个意思,这几个段落呢是一个意思啊,这个经常画,哎,我呢最怕画这个段落了,因为经常都画不准。啊,现在脑海当中还浮现出这个语文老师啊,这个我还特别积极啊,一举手一上来一画就画错了啊,别的同学呢,画错呢倒还不要紧,然后呢,老师会提示一下啊,一提示说他就答对了,然后提示我呢,我还答不对,老师呢也很无语是吧?哎,可能语文这块呢是偏弱一些啊,那么我们这里边的话呢,哎,我就想告诉大家呢,我也想画一画这个段落,这个段落呢,就是从第六章到第12章啊,这个呢,我就不用担心画错了,为啥呢?因为我是作者是吧?哎,我说了算哈,哎,我说呢,第六章到第12章它是一个段落的,那就是一个段落的啊,那么我们这个段落呢,要讲什么问题呢?咱们主要要讲的呢,就是关于索引和数据库调优的问题啊,那这块问题呢,对于我们开发人员来讲呢,是非常重要的,为啥呀,面试老问嘛啊有的同学呢,说我只要一面试就会问到这块啊,那是必然的,不管你是面试中级高级还是架构师,那我们关于这个呃,索引和调优呢啊,那肯定是非常重要的,你绕不开的这样一块内容,包括呢,我们像DBA也好,和数据库运维这个人员来讲也好啊,这块内容也是非常重要的啊,因为呢,我们啊,你看从用户的角度来讲啊,你是从手机端也好,PC端也好,我们查看这个数据本质上来讲呢,是不是都来自于持久化的这个数据库,对吧?那么我们无时不刻呢,都在进行网络的一个连接,从这个数据库这块呢,来获取这个数据啊,增删改查等等的都包括,那我们就需要呢,考虑这个过程当中的一个性能问题,那我们这个第六章到第12章啊,就肯定逃不掉。
01:50
好,这个呢,我们首先呢,相当于抛出来这块内容的一个重要性,那么具体讲解的话呢,呃,索引啊,这是我们第六章要讲解的一个底层的数据结构啊,主要呢,谈一谈这个B加数,OK,那么接着的话呢,我们这个第八章当中就涉及到了在代码层面呢,如何去体现这个索引,如何呢去create对吧?以及呢,我们在哪些字段上呢适合加索引,哪些字段上呢不适合加索引,这就是它的一个设计原则。
02:16
啊,再往后的话呢,涉及到我们索引的一个优化啊,其实我们在这个设计原则的话呢,也已经算是优化了啊,只不过我们这块的优化呢,是传到另外的点,就是说我们给这个表中的这个字段呢,加上索引呢,但是呢,一些错误的搜狗写法呢,导致我们这个索引啊就失效了啊,那这块我们就谈谈哪些呢行为会导致失效,那咱们要写的时候,是不是尽量要避开这些写法呀。OK,然后下边呢,谈的叫查询优化,准确的来讲呢,这个索引优化呢,其实属于我们查询优化中的一部分啊,属于叫物理的一个,呃优化了,那还有逻辑上的一个优化对吧?行,那这呢就是我们谈的这个,呃,从索引开始出发,一直谈到这个优化,那么在这个过程当中啊,我们再来谈一谈这个底层,底层呢就涉及到了我们这动DB的数据页,这个数据页呢,是我们这个从磁盘当中,呃,加载到内存当中的这个基本的这个单位叫数据页了。
03:06
那这个书页呢,它的具体的格式是什么样子的,这个咱们得清楚,因为它也是关注到我们这个B加数了,对吧,跟B加数呢是相关的。以及呢,在这个数据当中,我们一条一条的数据呢,它就相当于对应了一个叫行格式的一个点,行格式里边呢,又是如何进行划分的,这个我们就要说清楚,这个就是比较底层的这个事情了。啊OK,呃,那么接着的话呢,我们说呢,在谈这个优化的时候呢,为了更好的去来做一个这个这个说明是吧,我们优化呢,你得有这个方向啊呃,我们还要提一提这个性能分析的工具,通过这个工具呢,跟我们分析出来的这些数据呢,作为参考,我们来进行必要的一些优化,好那么这个层面呢,诶,你可以理解成呢,都算是咱们这个circle编写的这个层面的,那除此之外的话呢,我们还涉及到了叫数据库的一个设计的规范。比如说我们在最初设计这个表和表之间关系的时候呢,错误的一个表结构的设计导致呢,你再去写这个思口语句呢,也导致我们这个性能呢,可能提升呢是有限的,那就说明我们这个表在设计的时候呢,就不太合理,那这时候呢,我们就要谈谈表设计当中涉及到了比如三范式,四范式,五范式,八四范式对吧,这样的一些这个范式,以及呢,表跟表之间的这种关系,那就涉及到叫ER模型。
04:19
上面呢,第一章呢,咱们提了一下这个,呃,这个ER模型是吧,表跟表之间的一对一啊,一对多呀,多对多呀,这样的一个关系,那我们在这块呢,就是具体的再深入的进行一个讲解,OK,那这是我说的第11章,然后第12章的话呢,我们在统领性的讲一讲,我们进行数据库调用呢,诶是有一个先后顺序的,哎,这就属于一个经验之谈了,我们看这个顺序呢,是什么样子的,以及呢,除了上面这个之外呢,还有其他的一些需要注意的点是什么,这就我们的第12章整个来讲的话呢,我们这块内容啊,讲的还是非常厚实的。OK,那下边的话呢,咱们就来看一下这个第六章啊。索引的数据结构,那么我们这一章的话呢,主要谈的点呢,就是讲一讲我们索引底层使用这个B加数。
05:03
当然我这句话呢,其实不准确,为什么呀,因为所以的话呢,它其实跟具体的存储引擎是相关的。啊,它跟这个具体的存储引擎呢是相关的,那你得说清楚呢,你这个所以呢,在哪一个存储引擎当中用的是这个笔加鼠啊,这就更加的严密一些啊,诶默默认情况下呢,当然我这块指的是不是就in DB了啊,底层使用的是这个毕加数,好那除了毕加鼠之外呢,像这个memory啊,它还可以使用我们说的叫这个这个哈希索引是吧?OK。行,那这一章呢,主要的点呢,就是来给大家讲一下这个毕加数,以及呢,咱们这个毕加数跟这个面试的时候也是有时候也会问到啊,跟这个B数的一个区别是什么,至少呢,比如说放在大家眼前呢,有一棵树啊,这个这是一棵树,然后下边这块呢,也是一棵树,那你得能够分辨出来哪一个是B树,哪一个是B加树吧,这应该是最基本的点了,那还有其他的一些这个结构,那我们为什么呃倾向于选择B加数呢?那么这块呢,我们对数据结构这个层面呢,还要进行一个对比啊,然后最终呢,确定我们倍加数它的一个合理性。
06:05
好,嗯,那么在讲解咱们这个必加数的时候,嗯,大家你看到我这一章呢,写的这个顺序呢,是这样子的啊,我没有一上来呢去讲解说其他的一些数据结构,而是直接呢就奔着我们这个B加数去了,从最简单的这个模型开始一点点的去迭代,让我们这些结构呢变得更加复杂,最后呢,我们引出这个B加数的这个结构,这就相当于是一个推演的方式。我觉得这种方式呢,非常适合大家呢,去熟悉并掌握这个必加数。那在很多这个书上啊,或者一些帖子啊等等这个场景当中,我看到呢,非常多的情况下呢,都是一上来呢就开始讲解不同的数据结构,然后呢,毕加数呢,上来就直接给大家把这个结构就怼到这儿了,就看的就是一脸懵逼啊,不太合适,所以这块呢,我就换了一个思路啊,自我感觉呢,这一章的编写还是非常。不错的啊,来来,咱们一起来进行一个学习。那么首先呢,第一个问题呢,我们就先从这个直观上啊,去说明一下这个索引什么,呃,为什么要使用索引,以及呢,这个索引的优点和缺点是什么啊,这个讲解的话呢,可能稍微有点干,因为咱毕竟还没有接触索引是吧?啊但是大家呢,我觉得也是可以理解的啊来我们看一看。
07:15
所以呢,说是存储引当中用于快速找到数据记录的一种数据结构啊,这块呢,提到说索引是一种数据结构啊,大家可能现在还没有这个直观啊,一般呢,一提到这个索引的时候呢,通常都会举一个例子,这个例子呢,就是说相当于我们书的一个目录,这个书的话呢,咱们呃,最经典的那就是新华字典了啊,全国销量遥遥领先是吧啊,可以拍地球多少多少圈啊。这个新华字典,那大家你想想,如果我们要找一个汉字的话呢,没有这个书,呃,新华字典的目录,咱们是不是就要开始从那个啊开始去找啊,啊一个一个一个一个去找。对吧,哎,那这个呢,查找呢,我们可以理解成呢,叫呃叫顺序查找,或者叫一个全表的一个在我们表这个层面呢,就叫全表的一个扫描了。
08:00
那我们有了这个,嗯,字典的这个目录页以后呢,你是不是根据这个目录页呢,先找到你这个字,按笔画也好,按这个拼音也好找到呢,它是在哪一页的,然后直接定位那一页是不是就可以了。诶,那显然呢,我们有目录呢,这个查询的效率呢会更高一些。那我们讲完索引之后呢,我到时候呢,还要把这个例子呢给推翻掉,就是其实不太一样啊,但是呢,对于大家最初呢,有这样的一个直观呢,确实是有帮助的,那也就是说我们通过索引呢,去查找数据,就类似于我们通过这个书的这个目录呢,去查找这个数据是一样的,避免了我们的全表的一个扫描,那显然呢,它就能够提升我们查找的一个速度啊,这就这样的点。啊,知道这儿也就可以了,这个例子呢,呃,这个价值呢,也就到此为止,OK。诶,那么如果我们从一个具体的例子出发的话呢,诶,大家可以看这个图,比如说呢,我们现在啊有一些数据啊,这就是一些这个数据了,这个数据的话呢,我们想找这个六啊对应的这样的一条记录,那咱们这时候呢,找这个记录呢,都是存储在这个磁盘上的啊注意咱们现在讲的是这个磁盘,OK啊。
09:07
好,那么磁盘上我们去找数据的话呢,只有我们这个读数据的这个B是吧?呃,它这块呢,这个磁盘转起来之后呢,这个摆臂啊,不停的去找,呃,一可能在这儿啊,二在这儿,三在这儿,四在这儿,就是存储呢,它是一个呃随机性的,或者是一个离散式的,那我们要想找到六的话呢,那其实是要花费大量的时间的,所以这种方式呢,是最糟糕的啊,是我们不倾向的。啊,就是茫茫人海当中,你想找一个人这个事儿呢,是非常困难的,对吧,我们得需要提供一定的线索,或者说有一定的规律啊,那这块呢,我们就比他呢,稍微的好一点,就提到了这样的一个特征,咱们在这个磁盘当中啊,开辟一段连续的空间存储的数据啊,也是连续的啊第一条,第二条,第三条,第四条等等等等等,往下我们现在要找的是第六条数据,那我们就先把第一条数据呢,是不是从磁盘上加载到内存当中,然后我们看看呢,是不是我们想要的,一看不是,我们接着呢,是不是再找第二条这个数据呢,你看是依次变大的,我们要找的是第六条,那么在第六个啊位置我们就找到了它。
10:09
啊,这个呢,就相当于是我们的一个顺序查找,如果呢,要以这个复杂度来衡量的话呢,相当于就是on级别的对吧。好,这是它,那么有没有比这个方式更好的呢?哎,这块呢,大家看到这儿呢,放了一个数啊,准确的说呢,叫二叉树,再准确的说呢,叫做二叉搜索数,或者说呢叫做搜索二叉数,什么意思啊,就是这个数的特征呢,就是这是一个节点,这是它的左子节点,右子节点,那此时的话呢,这个左子节点呢,总比这个节点呢要小,右子节点呢总比这个节点呢要大,每一个呢结构都满足这样的特征,哎,所以呢称为呢叫二叉搜索数。啊,像以前呢,大家如果学习像Java的话呢,呃,讲到过哈希map底层使用的这个叫红黑术啊,它其实属于一种特殊的这个二叉素索术了。行,那比如说我们现在要找的是这个第六条这个数据,其实呢,就是找这个89了,对吧,那这时候呢,我们八十九一过来先跟这个根节点呢做比较,比34呢,是不是要大呀,那此时呢,我们只需要呢,从这个右子数呢进行查找就可以了,左边呢就不要了,相当于我们一下子呢,是不是就砍了一半数据啊。
11:13
那么接着再去比的话呢,89跟这个呢,你发现诶一样了,诶我们相当于是要把这个89呢,是不是要加载到这个内存中是吧,一下载发现一样了,那我们就到此为止,相当于我是不是两次就搞定了,哎,两次IO就搞定了,我们刚才上边这块呢,是不是发生了六次IO啊,那显然的话呢,我们这个效率会更高。那即使的话呢,我们这个找的不是89,比如咱们要找的是90 89不对了,我们再往下找的话呢,把这个91加载到内存中一看,比这个诶90要大,嗯,再往下找呢,这块因为没有子节点了,那也到此为止,相当于没找到这500户,是不是也只有三次IO啊。也是比我们这个呢,是不是要快一些。那如果要用这个时间复杂度来衡量的话呢,这个大家知道是多少吗?哎,是不是我们说叫LOG2为底和N的这个对数,哎,这是它的一个复杂度,比我们这个on呢,是不是就要靠谱一些啊。
12:02
啊,没有问题,哎,所以说呢,哎,我们说这个结构呢,就要更好,那有同学说说老师这是不是就我们所说的这个加数啊,啊,那当然不是了,哎,就是我们说的这个索引结构的这个B加数啊叭,这个要复杂很多,但是呢,我们要是简单的啊抽取一个模型来说的话呢,大家可以拿这个例子呢去做一个理解。啊,准确的来讲,我们毕加数里边呢,这一个位置不是一个元素了,它实际上呢,是一个数据页了,啊这呢也是一样啊,这是很多的一个数据页,这样的一个特征比这要复杂,但是呢,可以把它做一个简单的模型啊去理解呢,是没有问题的。那么这里边儿呢,呃,大家就提到一个,我们就提到一个点,就是咱们呃创建了一个索引,拿它呢,作为一个简单模型来理解的话呢,那很显然呢,它是不是减少了我们磁盘IO的一个次数啊,来提高了我们查询的一个效率。啊,你看我们这个呢,两次或三次,你这个呢,是不是得六次,这个呢更不靠谱。啊OK啊,这个点的话呢,大家应该能去理解好,这个点能理解的话呢,我还想进一步的给大家去说,咱们现在减少的你注意哈,是磁盘的一个IO次数。
13:04
他说这有什么问题吗?啊,这里边可是大有讲究啊,大家呃,如果说呢,你接触过这个数据结构的话呢,我们通常呢,在算法层面呢,经常会讲说你这个呢是呃N方的,你这个呢是这个嗯N的,你这个呢是这个log,呃N的,那很显然的话呢,我们说这个呢,时间复杂度是不是更低一些,这个要更高一些,对吧,比如说我们这儿呢,花了这个呃这个这个咱们我写这个多少一秒吧。一毫秒,这是我们从这个内存级别上来看,你花了一毫秒,这是它。啊,这个N方啊,这个两毫秒吧,诶这个呢,你发了两毫秒是吧,这个呢,你要N方的情况下呢,实际相当于就是这个四毫秒了,哎,当然这个就更少一点,你看这两个来比较的话呢,它的绝对值差的话呢,相当于是不是两毫秒啊,就是我们都在内存级别上去讲,所以你这个差一点,这个好一点啊,这是这个特征,而我们现在要讲的是什么呀,是跟磁盘的一个L物。那我们知道呢,咱们这个数据呢,从这个磁盘中去加载的时候呢,这个花的时间呢,其实比你这个几秒几毫秒来讲,是不是这个数量级上都要提升好几个档呀,所谓的天上一天,地下一年,就来形容我们的从内存中和磁盘中去读数据这样的一个差别。
14:13
啊,那比如说我们要从这个磁盘中去读的话呢,咱可能是需要呢,就要200毫秒啊,哎,可能需要200毫秒,那你想我们要是从磁盘中读取一次需要200毫秒,我要从磁盘中再读一次呢,是不是又得需要200毫秒?对吧,你这时候你看似呢,说这俩呢,差两毫秒,感觉差别挺大的,一个N方一个N,而我们这里边儿呢,你只是多读了一次磁盘的L,就导致呢,我们多了200毫秒,是不是完全冲散了你这里边的一个两毫秒这样的一个差别呀。啊,那所以说呢,我们减少磁盘IO的次数啊,它的意义呢,诶,就是在集上内存上来讲,是不是要远大于我们内存这个层面上的算法上的一个性能的提升啊。啊,希望我要表达这个点大家应该能明白啊,那我们跟这个磁盘的L的次数呢,是不是你要是减少的次数越多,那我们这个性能是不是有极大的一个提升啊。
15:05
啊,OK。好,那么接下来的话呢,我们再泛泛的去讲一下这个索引和索引的优缺点,跋竟咱们现在于还没有去谈这个底层的一个结构,对吧?好,那么泛泛的来讲解这个索引官方的定义,就是说索引是帮助MYSQL高效获取数据的一个数结构啊,大家呢,也都学过语文了啊,我们把中间这个修饰语呢给它干掉,相当于索引是不是是数语结构啊。哎,索引确实是一种数据结构,那具体是什么数据结构呢?是必加数吗?呃,还是这个其他的什么结构呢?那主要呢,就看咱们具体是用的什么这个存储引擎了是吧,OK。啊,当然呢,这个B加数呢,就是我们说的典型的这种数据结构了啊。啊,那中间这块修饰语呢,叫帮助MYSQL高效获取数据的啊,你这这块呢,减少磁盘IO了,那自然呢,我们查询效率就高了,这不就便于我们获取数据嘛,啊是一脉相承的。行,所以的本质呢,就是数据结构啊,它可以简单的理解为叫排好序的快速查找的数据结构啊,这块呢,大家可能还不太理解啊,这个你知道这样一个现实就行,后边我们就来讲这个必加数的时候你就知道了。
16:08
行呃,那么下边就提到说索引呢,是在这个存储引擎中去实现的,所以说呢,我们一提到说索引是什么样的数据结构,是B加数吗?啊,你要说是啊,其实这个是不够准确的啊,因为呢,我们说B加数呢,其实默认呢,指的是在这个in DB的一个存储引擎当中,它是笔加数,你要放在像memory当中,那默认呢,可能还不是这个笔加数,对吧?哎,所以一定要指明是什么存储引擎,OK。呃,另外的话呢,这个存储引擎啊,它还可以呢,去规范咱们每个表的一个最大的索引数和最大的索引长度啊,最大索引数呢,就是说我们这个表中你最多啊,能够创建多少个索引啊,这块中至少呢能够你哎就是这个上限是吧,至上限啊,至少是16个啊,其实16个呢已经不少了啊,一般我们也创建不了这么多。啊,以及呢,我们这个索引的一个总的长度啊,256次节,其实这个值呢,也不小了啊OK,就这个呢,大家做一个了解就行。
17:00
然后呢,我们来说一下这个索引的一个优点啊,那优点的话呢,刚才呃,显著的提到一个点,就是降低这个数据库跟磁盘的一个IO码,这个是我们创建索引的最主要的一个原因,然后第二个原因呢,就是创建唯一索引可以保证每一条数据的一个每一行数据的一个唯一性,啊大家可能说诶,这不就是我们讲的这个唯一约束嘛,哎,对的,咱们在在这个字段上呢,加了一个唯一约束,那么这个唯一约束的这个字段上自动的会添加一个唯一索引。啊,那具备的特点呢,就是保证这一行数据的唯一性啊,然后下边来说,呃,在实现数据的参考完整性方面呢,可以加速表跟表之间的一个连接啊,换句话说呢,对于有依赖关系的词表和附表联合查询的时候呢,可以提高查询速度,那就是相当于我们外键一样,这呢是一个从表,这呢是一个这个主表,然后这个字段呢,跟我们这个主表当中这个主件呢进行一个连接,那么我们在有这个索引的这个场景下呢,我们在连接当中啊,就能够快速的去找到我们想要的这个数据,提高了查询的一个速度。啊,后边我们会说这个事儿。好,再下一个问题说在使用这个分组和排序的时候,就是格和这个order的时候呢,呃,如果呢,我们用到这个索引呢,它可以显著的降低我们CPU的一个消耗,什么意思啊,这个还是依据一个现实,就是我们这个索引呢,它是。
18:11
呃,刚才我们提到了,诶在哪呢,叫排好序的是吧?诶在这它是排好序的啊,咱们先泛泛一讲,比如说针对于我们某一个字段呢,我们上面有索引,那么这个索引呢,它可能这个数据,比如说112。二。比如三,然后呢,四四啊等等等等等往后去排啊,就是我们这个索引的话呢,针对这个字段呢,你看它是排好序的这样一个特征,那么你想想在这种已经排好序的这个场景下呢,我们要进行order by,你看这不是本身就是不是已经排好序了,那你就不用再去排序了,那orderba呢,当然速度会更快啊,你说group拜呢,哎,那group拜呢,自然而然的,你看跟他挨着的前后呢,那肯定是你考虑要合在一组的啊,那这个俩再和呢,这个三不合适,那就他俩三自己一个,然后四呢这俩是吧,就是我们这块呢,在分组的时候呢,是不是也更加的轻松和容易啊。啊,所以呢,这就是我们索引的一个好处。
19:02
啊,1234主要呢是一啊。呃,相当于我们下边这个二还好啊,就是我们这个呃三呀四呀等等,这个其实是由于我们有了这个索引之后呢,它顺带呢,就把这个好处呢,就带带出来了,行,然后缺点是什么啊,缺点呢也是因为我们造了索引之后呢,它的一个实打实的这样的一个结构的特性,决定了它会有很多的缺点。啊,我们说任何事物呢,都是有利有弊的啊,一旦呢,讲了优点,大家呢,一定要想,哎,它还有哪些弊端。啊,对吧,哎,一定是这样子的,正所谓这个人无完人啊,我们说的这个人很完美,不可能啊,他一定有他的这个弊端缺点啊,只是你没有发现而已。所以说呢,这个呃,其实呃,不管是读高中也好,还是读这个大学也好啊,包括考研也好是吧,呃,不知道大家有没有这个共鸣啊,就是咱们学这个政治的时候啊,诶,咱们讲这个马克思主义,这个政治经济学是吧,里边我觉得呃最浓缩核心的就是辩证唯物主义啊,这个关这个这个这个。知识呢,简直是太牛了啊,任何事物呢,都有两面性的,辩证法的思想啊,非常厉害啊,这个你不能说一些绝对的话啊,因为任何事呢都是有两面性的。
20:10
啊,当然呢,也有一个绝对性的东西,那就是运动是吧?啊,运动是绝对的啊。好哎不多说了,来回过来,那我们说到索引有好处,缺点是什么呢?呃缺点第一个创建索引和维护索引呢,要消耗时间,并且啊随着数据量的一个增加,所耗费的时间呢也会增加,诶什么情况?那就比如说我们这呢,创建这个表,这个表呢,这不有好多这个字段了,对吧?那如果说我们针对其中的啊某一个这个字段呢,我们现在给他去加上一个索引,那这时候呢,他要呃针对这个字段呢,就像刚才也提到了,他要诶去排个序,然后呢,去把这个索引呢给它构建出来,呃这时候呢是需要花时间的,尤其呢,当你这个表里边,比如说呢,有几百万条数据,我们呢一条创建,所以呢,这个语句出来啊一回车它这块呢执行呢就会花一定的时间。哎,就会花一定的时间,OK,哎,这是我们说的这个第一个点啊,就是创建,所以呢,需要耗时间。
21:03
第二呢,说这个所以呢,它需要占据这个磁盘空间啊,我们说呢,本身这个表数据呢,是需要占这个磁盘空间的,说这个所以呢也需要去创建,呃,需要占磁盘空间,这个呢,咱们不是讲这个,这个叫什么my sum的时候呢,咱们底层呢,是不是分为叫MYD和这个myi,是不是这样的两个后缀的文件呀,这个呢,就是用来存放我们表数据的,这个呢,是不是用来存放索引的呀,显然呢,是需要占据这个表空间的。哎,占据我们这个表空间的,好,那这个占据我们这个底层存储空间,那即使我们这个DB的话呢,它是放在叫ibd这样一个文件当中,那这里边呢,虽然说只有一个文件,但是呢是数据和表,数据和我们这个索引呢,都合一了啊,都在这里边,诶随着你创建的索引越来越多,这个文件呢也会越来越大。啊,可见呢,它也是占据这个磁盘空间。下一个点的话呢,就提到了说虽然索引大大的提高了查询的一个速度,但是呢,它却降低了我们更新表的一个速度。
22:00
啊数对表中数据的一个增加呀,删除啊,修改呀,都会导致我们,所以呢,需要动态去维护,降低了数据的一个维护速度,什么意思啊,你想想刚才又提到这个叫排好序了,还是说1122,然后344,比如说是吧,那这里边呢,比如说你又插入一个数据二,那这时候呢,你在这个缩印的维护当中呢,要保证它有序,是不是要把R放在这儿了,这样放在这儿的话呢,这些数据呢,是不是要往后去做一些移动。啊,那这是一个插入操作,那你要是把这个,呃,某些数据,比如说三改成30的,30是不是也得往后去走啊。啊等等啊,那这个删除呢,删除的就是有时候删除之后呢,我们还需要呢,把这个数据呢,再往回去补回来这样的一些行为,那么这个过程呢,显然是不是需要耗费我们这个CPU的一个运算呀,啊,那就会降低我们这个呃,更新的这样的一个速度,尤其呢,大家你想想我们这个表中的数据是很多的,这个场景下,你要一改,批量的改了一批的数据。啊,或者说呢,是我们这个进行大量的频繁的一个呃,增删改操作啊,这会导致我们这个维护这个表花的时间呢,就会更长。
23:02
下一期会更长。好,那就是说呢,我们这个是有这个弊端的,对吧?哎,那怎么办呢?诶这里边提到了一个小的技巧啊,这个技巧呢,是这样子的啊,说你要是针对这个表呢,呃,如果你要是马上进行这个频繁的一个增删改操作了啊,我们在相应的这个字段上面也都有这个索引,那怎么办呢?你可以考虑先把这个索引呢给它删掉啊,在没有索引的情况下呢,你先添加啊,或者叫添删除或者叫修改,呃,然后呢,结束以后呢,再把这个字段上的这个索引呢给它添加上。啊,今线上的话呢,有同学说老师那不那不是会在这个第一个点上会花时间嘛,诶确实会的,但是呢,你这个第三个点上频繁的进行这个操作,花的时间比我们最后呢,一次性的呃,去创建一个索引花的时间呢要多得多啊,这个时间呢,显然要更多一些啊,所以呢,这是一个小的技巧。好,那这样的话呢,咱们就先把这个索引的这个优缺点呢,给大家讲解了一下,可能呢,大家还会有点模糊。啊,有点模糊,或者呢,你理解没有那么透彻,为啥呢?因为咱们还没有真正意义上的去讲这个,呃,鼻加数这个结构,等我们讲这个结构以后呢,大家回过来你再去看这个优点和缺点,你会发现呢,极其的清晰。
24:07
啊,因为你脑海当中是不是已经有这个B加数这样一个图了,所谓的胸有成竹是吧,OK。好,那我们就先说到这儿。
我来说两句