00:00
好,那么关于这个索引的优点缺点啊,我们就告一段落啊,整体上来讲的话呢,大家可能有所理解,但是呢,还是不是那么清晰透彻,主要因为呢,就是我们还没有真正意义上去讲解这个索引底层的这个数据结构啊,那我们在讲解完以后呢,大家翻回来再看我们这里边儿提到的优点缺点,包括这个本质,大家呢,会觉得非常的清晰和透彻。好,那接下来的话呢,我们就来讲解一下这个索引具体的一个推演,那讲解的时候呢,首先我们要做个声明,就是咱们提到了说这个索引啊,它是不是在具体的存储引擎当中来现的,那就意味着呢,我们讲所以的底层数据结构,是不是一定要指明我们是用的哪一个存储引擎,对吧?好,那由于呢,我们在5.5之后呢,咱们默认使用的都是DB了,所以这里边呢,我们先来讲解一下,在DB当中,我们索引底层的这个结构呢,用的是什么。这里呢,我选的是一种这个演绎的一种方式啊,就是我们层层的让这个模型呢,越来越复杂,那最简单的一个模型呢,或者我们这个思想来源于哪儿呢?就是咱们前面讲过的这个叫二叉搜索数,这个呢,可以看作是我们这个B加树的,诶极其简化以后的这样的一个模型,那那我们在讲完这个B加树以后呢,大家翻回来,你跟这个二叉搜索数呢,你做个映射,你看一看是不是他们其实是一种,呃,这个相似的一种关系。
01:15
好,下面呢,我们就来进行一个具体的讲解,那我们首先呢,做这样的一个查询,查询的话呢,我们来注意咱们这个索引的话呢,主要其实针对的就是这个查询操作的时候呢,提高我们的一个速度,对吧?好,那这块我们就首先呢,先列了一个查询的需求。那么这个查询需求呢,我们是通过一个呃字段呢,进行了一个精确的查找,那这个查找的话呢,我们就涉及到呢,具体在底层的一个呃这个数据当中呢,进行一个寻找了,这呢提到一个概念叫做页啊,咱们在前面呢也提到过这样的一个词是吧?诶这块我们相当于是再引入一下啊,那这块呢,我们先做一个说明啊,比如说我先是通过这个。叉叉呢,登录一下咱们这个,嗯,数据库服务器啊。这儿呢,我先连一下这个150。啊,再连接一下咱们这个160,先登录上我们这个远程的这个呃森S,然后的话呢,我们再去登录一下这个MYSQ的数据库服务器啊MYSQL。
02:09
哎杠U呃,Root-PABC123,这个呢是咱们这个8.0的,这呢是这个5.7的啊都分别呢,我们做一个登录。当然这里边我们演示的话呢,主要呢,就在这个8.0里边去演示了,因为呢没有主呃这个本质的这个区别,好,那此时的话呢,我们首先呢去说一下叫data basis。啊,然后此时呢,比如我们就使用叫爱的硅谷DB啊,咱们做一个说明。然后呢,我们去select啊,这里边儿这个表呢,咱们在讲上面的时候呢,大家都比较熟悉了,叫employees这个表,对吧,那这个表中的数据量呢,其实比较小,那么在实际当中啊,我们说这个一个表中的数据量呢,是可能达到几百万条甚至上千万条数据的,那我们这些数据呢,在底层存储的时候呢,使用到的一个基本单位呢,我们称为呢,叫做数据页。那我就简单先写一下啊,Data配置是吧,哎,这个数据页那一个数据页当中啊,它的默认大小呢,是这个,呃,16KB,那就相当于它能够存储一波数据。
03:05
啊,那么一行呢,我们称为呢,叫一个记录,那就是一条数据了,好那么我们一页中存储的数据呢,是有限的,我们是不是要呃涉及到多条这个呃多个这个数据页的一个使用了,对吧?它作为我们存储数据的一个基本单位,好那么回过来假设的话呢,我们这个表中的记录啊比较少,少到呢,我们在一个页当中就可以存储啊这个完成对吧?那现在呢,我们要查询这个一条记录呢,实际上呢,我们是不是只需要呢,在这一个页当中进行查找就可以了呀。行,那么这个在查找的时候呢,我们又分成了两种情况,第一种呢,就是以主键呢为搜索条件,那由于呢,我们通常在添加数据的时候呢,这个主键呢,一般都是自增长的,所以说呢,你可以看作呢,我们这个主件呢,是不是一个有序的状态呀,那有序的状态我们要找其中的一个,比如说呢,我要找这个118,那其实的话呢,因为它是一个递增有序的,咱们可以考虑使用的是不是就叫二分法。对吧?诶使用二分法的话呢,我们可以快速找到,我们要找到这个数据,那它的复杂度呢,就是一个log n这样的一个级别的,那如果我们要是以其他列作为这个速度条件,那比如说呢,我们以这个higher data吧,我想找一个是96年7月18号的这样一条记录,由于我们这个higher data呢,它不是一个递增的顺序的,那我们要想找刚才说的这样的一条记录的话呢,怎么办呢?那你是不是只能是这样一条一条这样顺序的方式进行便利了,那此时呢,我们这个复杂度呢,就是on级别的。
04:24
对吧?诶,这个大家应该能够去理解啊,像我这里边儿写的,咱们只能够从最小的记录开始,依次遍历单列板中的每条记录,那么所谓的最小记录呢,其实呢,就相当于是我们第一条记录啊,这个以主见的一个角度来讲呢,它就是一个最小的记录了。那么依次呢往下去找,这呢提到的概念叫做单链表,那这是什么意思呢?这个就是我们的一个数据页,这个数据页里边呢,存储了我们一条一条记录啊,这呢就是第一条记录,这个呢是第二条记录,那么这个记录的话呢,我们后边下一章呢,也会提到一个概念叫做行格式,诶它里边这个记录呢,有一定的格式啊,我们这个对应的叫行格式的,那么多条记录之间,我们在底层是依次紧密排列的吗?其实不是的,那我们表中的记录量是非常大的,我们不可能保证每一条记录呢,都是物理磁盘上的,物理上的一个连续的,对吧?你想想,如果我们要是插入一条数据的话呢,保证物理磁盘上连续,那是很崩溃的,每一条记录都得往后移,效率呢是非常差的,所以说呢,我们只需要呢,保证它们之间呢,是一个逻辑上的一个连续的就行,怎么保证连物理呃,逻辑上是连续的呢,我们就用一个单列表去连接,是不是就可以了?
05:28
所以这里边提到了我们每一条记录之间啊,是用一个单链表的方式连接的,所以我们就是哎这样的一个意思。好,这就过了,那如果说呢,我们在很多页当中去做这个查找,那又是一个什么样的场景呢?那也就意味着呢,我们这个表中的数据量呢,非常大了,我们一个页当中是存不完的,我们还得从那诶其他的这个数据页当中去找,诶你想要的这个数据,那首先我们要做的一个点呢,就需要确认的啊,你到底是在哪一个,是不是页当中啊。啊,然后呢,找到这个页以后呢,我们再按照刚才提到这个步骤,你是这个页里边呢,用主键作为搜索条件,还是以其他列作为这个搜索条件,就跟上面是一样了,那这呢,我们如何去定位,呃,记录所在的页呢?啊,这里边又遇到一个麻烦事,那我们这个页啊,这是一个页,这是一个页,假设我们这个数据呢,就用了三个数据页呢,去存储我们的所有的记录,那我们这条记录呢,到底是在这个页,是在这个页还是在这个页呢?那这里边儿呢,就得看你这些页之间有没有一定的关系了。
06:26
啊,如果说要是没有的话,你比如说我们还是要找这个叫hair data吧。对吧,咱们找higher data啊,等于多少这样的一个,呃,这条记录,那么我们这个不同的树叶里边没有说这个,呃里边的higher data是递增的啊,这呢也是递增的,而且呢,说这里边的值都比它大,没有这样的说法啊,没有这样的说法,那就意味着我们要是找还等于某一个值这样的这样一条记录的话呢,我们数据页呢,没有办法,你是不是只能是先从第一个页开始,一条一条的去找,看看能不能匹配上,那如果即使匹配上了,是不是也得再找。
07:01
哎,另外的数据页对吧,因为可能我们要查询的是不是多条记录啊,行,那你第一个页查完之后呢,还得来第二个页啊,依次呢去编了一遍,然后再找到我们这个第三个页呢,再依次去编了一遍,大家想象一下,我们这个效率呢,是非常差的,尤其呢是当我们一个表中啊夸张一点讲,如果呢,有1亿条记录,那我们要把这一条记录呢,分散在比如说几百个上千个啊,上万个这样的这个数据页当中,我们得一个数据一个数据的去过一遍,那很崩溃了。而且呢,我们在过呢,这是就是便利呢,这是一方面,另外呢,这个数据呢,我们从物理磁盘上把它加载到我们这个内存当中,这个过程啊,也是极其耗费时间的,甚至说这个时间呢,是不是要远高于我们去便利你这个业中的这个过程的这个时间,对吧。那显然呢是不靠谱儿的,那怎么办呢?那我们就得考虑呢,使用这个索引了。啊,这个我们就相当于把这个逼到这个绝境上了啊,我们必须要设计一个结构,使得呢,我们这个查找呢,是非常高效的,针对一条数据呢,我们希望呢,极器快速的把它找到啊,你看我们设计完以后呢,大家你回过来再看一看啊,是不是确实有了极大的速度的提升。
08:06
那这呢,我放了一张图,这个图的话呢,其实呢,就是想说明真正意义上呢,我们说所以拿一个生活中的例子去举例的话呢,应该是图书馆中的这样的书的这样书架的这样的一个结构。啊,书架这样一个结构,那么每一个书架呢,大家就可以想象成是一个数据页啊,那比如说你现在你要找一本书,从这个,呃,我们图书的这个管理系统当中一找呢,诶找到了说有这本书就在这个图书室当中,但是没有告诉你在哪个书架里边,呃,那么也没有我们这里边这些标识,大家你想象一下,你是不是能做的事儿呢,只是呢,是不是一个书架,一个书架的,一本书一本书的这样去便历去查找啊,那你等你找完的时候呢,那可能得半天都过去了。啊,这个显然不靠谱啊,那怎么办呢?我们需要呢,去设计一个,那在生活当中啊,设计一个什么呀,我们这个书架呢,是放数学的。这个书架呢,来放物理的,这个书架呢,来放这个文学的这个放影视的这个放小说的这个一旦指明以后呢,你现在要看一本小说,是不是直接就奔着小说这个书架子去了,当然他有可能好几个书架,那就从这几个里边去找,然后这个书架找到以后呢,在这个书架的每一层上呢,是不是还有具体的,呃,指定的一些这个编号,呃,你再去找,然后呢,就能非常快的是不是找到你要找的这本书啊。
09:15
啊,没有问题,那么咱们这里边儿这个索引的设计呢,其实跟这个结构呢,就非常的类似。啊,在这个大学里边呢,有一个专业呢,叫做图书馆学是吧,这个其实我一直弄不清楚,这个图书馆学作为一个专业存在的话呢,它主要都讲一些什么内容。啊,这个如果有同学呢,是这个图书馆学的,可以在这个弹幕上呢打出来,诶你教我们一下,说这个都是学什么东西的啊,这个我确实一直比较有兴趣啊,但是我一直也没有去关注过啊。好,说到这儿呢,我们就哎这个聊了这一句,那么回过来我们看一下,诶,咱们如何去设计一个索引呢?哎,我们拿一个具体的例子呢来进行说明,这儿呢,我们创建了一个表,这个表呢有三个字段,C1 C2 C3啊int类型是吧?哎,这是一个叉类型的,主键呢,是我们这个C1,这儿呢提到一个概念叫做行格式啊,用的是compact啊,是一种比较经典的这个行格式,那这个行格式的话呢,咱们在下一章当中啊,具体呢会给大家展开去说。
10:10
啊呃,在这儿,诶具体的展开去说,简单的先搂一眼,这个行格式的话呢,它主要呢,是来记录咱们存储的这一条记录,嗯,比如说呢,我们添加了,诶这是相当于是两条记录了,对吧?那么我们去添加一条记录呢,它这条记录的这个格式我们就称为呢叫行格式,或者你叫做记录格式也行,比较经典的一个呢,就属于叫comp。那我们这条记录呢,咱们平时知道呢,就是存储咱们一个列一个列的值,这就是我们记录的一个真实数据了,那其实除了这个真实数据之外呢,我们还会记录去记录一个额外的这个信息啊,那我们就要到下一章的时候呢,咱们再详细的去说这个事儿啊,这也算是底层的一个东西了,对吧,那我们现在呢,还是以实用为主,那我们呢,简化一下咱们这里边儿这个所谓的这个行格式。呃,现在呢,咱们往这个表里边去添加数据的话呢,是不是涉及到就是C1C2C3这三个列,那这三个列的这个值呢,我就放在这儿了,那除此之外呢,我们目前还关心两个字段,一个呢叫record type啊,就我们当前这一条记录的类型和它的下一条记录的一个地址,那其他的这个字段呢,我们都归到其他这块了,暂且咱们也用不着我就把它呢就呃都到其他或者我们下边再谈的时候呢,把它就直接呢删掉了。
11:22
好,那么为了方便呢,我们去说明这个结构啊,我把这一条这个横向摆放的这个数据呢,我给它竖着放,那我就这样来放了,对吧,那C1C2C3呢,不用多说,就是我们每一条记录呢,真实的这个数据值了,那么前面这两个的第一个叫record,它呢存放呢是具体的叫0123这样的四个值,那么零的话呢,就表示我们这是一条普通的记录。啊,普通的记录,那二呢表示的我们是最小记录,三呢表示最大记录,啊这个大家呢,你先知道,一会儿我们就要用这个一的话呢,其实它表示的是目录项的记录啊,暂时咱们用不着啊,一会儿再说,那么这个next record呢,就是我们当前这条记录的下一条记录是什么?就像我刚才说到的,咱们这个数据页里边第一条记录跟第二条记录呢,在物理磁盘上呢,它不是连续的,咱们只要保证它是一个逻辑上的连续就可以了,我们就通过这个指针,这个所谓的指针呢,就是我们这个变量了所定义的这个值。
12:15
A next record。好,这个清楚了是吧?行,那下边的话呢,诶,我们在一个,诶先看这个图啊,我们在一个数据页当中就出现了一个基本的模型,数据页里边呢,假设我们现在呢,存储了三条记录,那么三条记录呢,诶我们就可以怎么着呢,把这个以主键啊,以主键来看最小的主键,比如这个是一,这个是二,这个是三,我们这个按照这个主键值的这个顺序呢,其实它是有一个排序的,最小的放左边啊一四呢变大。那自然而然的我们这个,呃,左边这个呢,是不是就最小的记录啊,诶我们就通过这样的一个记录这块写个二,表示你是最小记录这个位置呢,就记录我们这一条记录的这个地址值指向它。然后呢,我们最右边这个呢,自然而然就是最大的记录了,我们就用一个三表示这个record type,然后诶,让我们这个呢指向它,诶这就可以了,这就构成我们一个基本的数据页的一个模型,诶大家呢,要心里边儿有数啊,基本的数据页的一个模型就出来了。
13:11
好,那么有了这样的一个基本的模型以后啊,现在呢,我们进行一个简单的索引的一个设计方案啊,简单索引的设计方案,那比如说我们现在呢,往这个表当中啊,咱们去添加了三条记录。那就是我这样的三条记录,那第一个字段呢,就是我们的这个主见值啊,135这个恰好呢是一个递增的对吧?行,那这块我们存放的话呢,是不是就是一啊,第二个字段是四啊,这个是U,然后39D啊39D53Y53Y是不是就这样来存放啊,那有同学如果问说老师如果说能把这条记录跟这条记录在添加的时候呢,他俩交换了一下,那这个里边怎么放呀?诶这个大家你注意我们呢,一定要保证咱们这时候添加的这三条记录呢,它必须得是按照这个主件呢,是一个递增的顺序。那你要是先添加这个五的这个,呃,这一条记录,再添加这个三的话呢,我们也必须呢,把它俩呢做一个交换,保证这个三这块呢,是在五这个的前面的,哎,这个大家一定要注意,这是为了我们后续呢查找的一个方便啊。
14:09
好,那这呢我们就放好了,那自然而然的前面这个呢,二就指向这个一的这条记录,然后这个最大的这条记录呢,指向我们这个三的啊这个呢是大家能理解的对吧,那直接呢,他们是一个单列表的一个呃结构啊,那么现在的情况下呢,我们又去增加了一条记录,我叫44A啊,我就故意呃恶心了一下啊,咱们现在填这个四呢,是不是比较小啊,那最初的话呢,我们的想法呢,就是这样子的。呃,这块呢,咱们做一个假设啊,呃,正常来讲呢,我们一个数据链当中呢,是可以存储这个上千条我们这个记录的,甚至更多,那现在呢,这个咱们为了简化这个问题,咱们假设呢,这个数据页当中最多呢只能够放三条记录,那现在我们要放的是第四条记录,显然呢,这个是不是盛不下了,盛不下呢,我们就需要呢,是不是不得不分配一个新的页啊,那这个页呢,有同学说老师这个页呢,有讲究吗?没有,这个其实就是一个具体的地址了,所以我就呢,用一个页号呢,来这个形象点去表示啊,随机呢写了个数叫28。
15:05
好,那我们把这个44A放到这儿,呃,然后呢,叶跟叶之间呢,呃,因为呢,数据叶呢,它是16KB,咱们底层呢,也没有办法呢,是不是保证所有的数据页呢,都是连续存放的,你像你上一条数据呢,数据页之间连续存放,那意味着我们底层呢得超大的一个连续空间,那不太可能是吧,所以呢,我们数据页跟数据页之间呢,达到他们是一个逻辑上是连续的就可以了,我们用这个双线列表呢来表示就OK。好,就是物理磁盘上他俩可能不连续。行,那么接着讲,那我们这里边儿呢,就放了咱们刚才说的这样一条记录啊,那自然而然你最小最大是不是都是你对吧,那这个合理吗?那我们说呢,不太合理啊,咱们需要保证的一点,大家自始至终需要记住,就是我们现在呢,是按照这个主建的方式呢去存储的,我们必须保证当前创建的这个底层的结构啊,依次要按照主建递增的顺序来,那就意味着我们这一条记录是不是跟这一条记录呢,他要做一个交换呀。
16:01
啊,这我们称为呢,叫做记录的一个移动。哎,叫做记录的移动啊,那移动完以后的话呢,是不是就这个,呃,44A就放到这儿了,然后53Y呢,就放到这儿了。啊,就放到这儿了,然后这种移动呢,哎,我们也起了一个词叫做叶的分裂。那这个过程呢,称为他叫页的一个分裂,当然这页的分裂呢,还包括其他的场景,就是当我们这里边存存满的时候呢,我们再去分配一个页是吧?哎,这相当于也是一个分裂的一个过程啊。好,那这呢,我们就呃说清楚这个事儿了,那说清楚这个事儿以后啊,咱们接着呢,再往下去看,随着我们这个数据的不断去增加,诶不断去增加,然后我们呢,是不是就要开辟不同的这个数据页来存储数据了,诶那么要保证的就是我们主键值,你看必须得是依次递增的啊,对应的就是我们这个颜色的这个字段。啊意思递增的,然后数据页跟数据页之间呢,我们是不是通过这个链表的方式呢,去连接就可以了,这个号的话呢,不需要去连续啊,只需要呢,有一个具体的地址就可以了。
17:01
对吧,那就可以了,行,那么在这样的场景下呢,我们如果呢,去找一条记录的话,那举个例子,比如说咱们就想找这一条记录吧,我想找这个,诶C1这个值呢,是20的这样一条记录,那么我们要找的话呢,咱们当然一看现在知道是在这一页当中,但是呢,你要刚开始来的话呢,咱们是不是也不知道说诶只知道呢,是按照递增的顺序来的,但是你也不知道呢,这个是在哪一个页当中,那这时候呢,是不是就意味着我们可能还要考虑是不是第一个数据页啊。那一看这个一不行,三也不行,四也不行,第一页不在,那通过这个指针呢,找到第二页这个不对,这个不对,这个不对还要大,是不是接着找第三页找到这个,找到这个A是不是就找着了。那这样可以。啊,这样可以,但是的话呢,我们显然看到呢,是不是这个效率呢,是要差一些的。啊,是要差一些的啊,那为什么差呢?你想想,如果我们这个数据页呢,是非常庞大的啊,这个量非常大啊,那每个页之间呢,你这样还需要呢,都过一遍,然后页里边这个字段呢,也得,呃这个记录呢,我们也需要一个个去查看一遍,这个显然呢是不是太靠谱。
18:03
啊,当然了,这里边能有一个优化的点呢,就是我们在具体这一页当中,由于我们这是不是这个递增的顺序,因为数据页呢,这个数据项呢,可能很多,我们到时候可以呢,是不是用二分法对吧?诶你比一下,你看是不是在这里边儿没在那你就直接蹦到这一页里边,但是呢,每一页呢,你看这块都得考虑一下,这个就有点慢了,怎么办呢?我们给所有的一页啊,再去建立一个叫目录项。哎,给他们建立一个目录项,那目录项的话呢,我们就这样子来,就是我们这个结构。针对这个第一页的话呢,你看我们取出来这一页里边呢,最小的这个记录这个最小的记录对应的这个,呃,C1这个主键值是不是一啊,那我们就把这个一呢取出来,然后接着呢,我们再记录一下你这个页的这个地址,那在咱们这呢,就是一个页号了,那我把这个十呢记录一下。那就是这是我们的目录项叫10啊,你注意一下我们刚才说的这个点分别是什么意思,那接下来的话呢,也同样的如此,我们就取出来这个最小的是不是五啊,然后对应的这个是一二十八是吧,这就一二十八啊,然后一四这个像这个是209,我们这209这个是一二十一二十啊,这个也同样的道理,那这样的话呢,我们把这个目录项的这块那就取出来了,那取出来以后的话呢,我说现在呢,就比刚才我们再去查找这个呢,要靠谱的多,那当然你看啊,我们现在呢,还是找这个C这个值是20的这一条记录。
19:21
当然也可能是多条记录对吧?呃,只不过由于我们这个是主键了,它不可能重复,所以就只有一条了,你要其他字段呢,可能是多条啊,咱们先说主见啊,先说主见,呃,这这时候呢,大家你说老师我想找这个C2是等于这个二的,这个是行不行,用这个图可不可以不可以啊,不可以,那后边呢,你需要针对这个C2呢去建立缩引,咱们现在呢,都是针对这个主键建立的索引啊,就是我们刚才说的,咱们要求这里边的这个字段呢,是不是依次递增的啊,就是针对这个主键,我们现在在建这个,呃索引结构啊。所以我们现在查找的话呢,只考虑这个主见,那我们这个C1是20,我要去找的话呢,咱们就不去看这儿了,咱们先看这个目录项,这个目录项这块呢,呃,你要举个例子啊,比如说我们先看这个一,一看一呢,我们是不是比一要大啊,那第二个呢,你再看看这个五,我们是不是比五还大呀,所以干脆这一个呢为代表的是不是这个我们就完全过掉了,就不考虑了,对吧?然后呢,这个是五,这个是12呢,是我们20:12还大呢,所以这个呢,是不是也不考虑了。
20:19
然后再看这是209 209:20呢要大,所以呢,我们这个209呢,是你这个页当中是不是最小的是209啊,那我们是20比你这个最小的小,那我们是不是只能够是从这个目录项三里边去找了呀,那这样的话呢,咱们就定位到是不是这个数据页了,那在这个数页当中,由于呢,我们这儿呢,又是一个递增的,咱们是不是就使用二分法就可以了,诶快速定位呢,就能找到这样一条记录。那么此时呢,大家你会发现呢,我们这个页中的记录,这个记录,还有这个呢,是不是完全我们都没有进入去做一个比较对吧,直接呢,就定位了我们这个目录像三,然后呢,再找到它效率呢,比我们上边呢,是不是要高一些。啊就要高一些,然后再谈一点,就是咱们这里边这个目录项的话呢,诶它呢,你看这是不是涉及到他们几个呢,也是一个依次递增的顺序啊,那既然是依次依次递增的,咱们这个表中的数据很多,这个目录项呢,是不是也是越来越多,那我们再找这个C1,那是这个20的时候呢,咱们也没有必要呢,一个一个去比了,是不是也是直接呢,从二分法的方式呢,去直接定位是吧,比我们这个顺序的一个去找呢,还要快一些。
21:22
好,那么这样的话呢,咱们就大体上呢,先出来了一个关于索引的一个出行啊,这时候呢,我们能看到呢,就是随着我们这个数据呢,不断去增加,诶那一个数据页里边呢,它可能有很多条记录啊,比如1000条记录啊,针对这一条1000条记录呢,我们建立一个目录项,诶每一个目录项呢,诶它对应的你看都是一千一千条记录,那我们这里边儿呢,是不是就有这个4000条记录啊。那这4000条记录当中,我们想找其中的,比如说某一条记录,咱们直接呢,诶找到一个目录项,是不是一下子就把其他的3000条记录就给我干掉了,然后在这里边的话呢,我们针对这1000条记录呢,再二分法一下,是不是这个速度就比以前快多了。
22:02
啊,没有问题,行,那这儿呢,我们就把整个的这样一个结构呢,哎,就给大家起一个名字就叫做索引。啊,这个呢,只是我们先简单的搭建了一个索引的结构,在这个基础之上呢,我们还得需要呢,做不停的这个迭代处理。啊,那下边呢,我们该如何去迭代呢?来,我们接着再往下看。
我来说两句