00:01
好了,今天我们来学习数据库的索引。数据库的索引是个什么东西呢?所以呢,是为了提高咱们数据的查询效率的。首先来记一下数据库索引。数据库索引这一块的话呢,在面试的时候呢,也是呃,问的比较多的一块知识点啊。首先这个索引它是为了提高咱们数据的查询效率,就相当于我们是给数据呢做了一个编号,然后呢,通过这个编号可以快速的去找到你要呃查询的这个数据,对吧。就相当于咱们这个书的目录是一样的,假如说你一本书没有目录的话呢,你比如说你要找一个一个知识点,比如说我是一本写Java的书,对不对,然后呢,我我说我要找这个string这一章的内容。那么如果说没有目录的话,你就必须从第一页开始往后翻,一直翻一直翻,就相当于是在遍历整本书,然后找到string之后呢,是不是就停下来了,对不对?如果说用数据来讲的话呢,是不是你要遍历整个数据库表里边所有的记录一个一个去过?
01:09
对不对,假设我们有10万条数据,那么运气好的话呢,可能第一条就是你要找的数据,那是不是一下就查出来了,如果说你运气不好的话呢,是不是要需要去便利100万,呃,便便利10万条数据是不是才能找到,因为他在最后一个嘛,对不对,所以说这个东西呢,肯定效果是不好的,查询速度很慢。那如果说我们这本书有了一个目录之后呢,呃,假设我就把比如说Java基础的是第一页,然后呢,呃,Java的什么这个运算符,比如说第十页,然后呢,一次一这样去排列,是不是你就可以非常清楚的知道。哪一个知识点在哪一页,比如说我一我一查看目录对吧,String是在第30页,OK,我是不是一下就翻到30页了,一下就找到这个,呃,我要找的内容了,对吧?那么数据库索引也是类似的一个形式。它会给数据进行编号,然后的话,我们就会通过这个编号呢,快速找到这个这个数据,而不是说从第一条开始一直往后编利对不对,这样这样的话呢,它的随机性太大了啊,有了编号之后呢,可以快速的去找到它对不对,这就是数据库索引它的一个作用。
02:16
来记一下。索引是为了。提高数据的查询速度。相当于给数据进行编号。相当于。给数据呢进行编号。给数据进行编号,然后的话,这样这样在查找这个数据的时候,就可以通过编号快速找到对应的记录。在查找数据的时候。就可以。通过,呃,编号呢。快速找到。对应的数据对吧,这就索引它的一个作用啊,那么我们这边一呃要讲的是是是个什么东西呢?啊呃,索引的话呢,我们说索引它里边用的是一个什么样一个数据结构呢?它其实用的是一个必加数。
03:08
毕家翠。对不对,他用的是一个必加数的一个数据结构,那么今天我们就来讲一下这个必加数到底是个什么东西,对不对,因为索引这个使用,包括它的操作我们已经很熟悉了,我们今天主要来讲一下这个B加数它是个什么东西啊啊。它其实是一种数结构,那么我们来看一下这个索引到底为什么要使用这样一个结构去处理啊。首先我们去做一个测试,我先给我的数据表里边呢,去添加一些记录,而且大家知道我们这个主键是不是自带索引啊,主键它会自带索引的啊,所以呢,我们这边也不用去呃添加一个索引,我们直接用主键的这个呃自己带的索引就OK了啊,添加索引的话,这个SQL语句是不是我们之前也说过了,对吧啊。那么来看这个使用主键,使用主键的这个自带索引,我们怎么怎么去处理啊,我先在这张表里边添加一些记录。
04:03
比如我这样这样是一个user表,User表里边的话呢,这个字段很简单啊,就是一个ID,一个name。ID的话呢,是我们的主键,然后内部的话呢,就是另外一个字段啊water类型的好呃,然后呢,这个ID是一个主键,它会有索引的,那么现在我就加记录。音色,Into。User。ID name values。这边的话呢,我们去,呃,添加这个。数据啊,这边我不按照顺序去添添加,比如我添加一个11A,然后呢再来。我不按照123456789这样一个升序添加啊,我就随机添加一些这个数据,然后你看这个主键它是怎么排布的啊。比如说。七。
05:02
C,好,然后呢。再来个2B。然后再来个五个亿。好对吧,我们这样去加。然后把这个数据呢存进去,大家注意看走。好,现在我已经把这些数据全部存进去了,我是按照1764325这样一个顺序存的,但是你看我们我们刷新之后呢,看这边它会自动按照1234567。这样的一个,呃,是不是一个升序排列去把这个数据存进去,对不对啊。好了,记一下。这是最终的结果。对吧。也就是说呢,我们是用一个乱序插入的,但是呢,会自动按照ID呢进行呃,排序乱序插入数据。
06:00
然后呢?会。自动安装。ID进行升序排列。按照它进行顺序排列,这是因为什么呢?主键自带索引。主键自带索引啊,所以呢它会自动排序,目的呢,就是为了让这个查询变得更快,对不对啊。所以说这就是他一种排布方式啊,也就是说我们即使不是按照这种呃,一个升序的方式去把这个数据存进去,它也会自动的给你按照升序去进行排列的,对不对好。这样的话呢,我们查询起来就会比较快了,因为是一个升序嘛,升序排列,你是不是就可以按照这个编号找到对应的数据,如果说乱序的话呢,是不是给你编号,你也不知道他在哪儿啊,对不对,是这么一个意思啊。那么接下来我们来看这个数据啊,它在存储的时候,它的内部结构到底是怎么样的,就是就是我们把这个数据呢,在数据库里边,它到底是一个什么样的一个形式去存储的啊把这个形式搞清楚,我们就逐步的会把这个递加数呢搞清楚。好首先来看这。
07:09
B加树它指的是这种结构啊,我们现在还没还没讲到这个结构,先来看它的局部,这个局部组装起来就是一个,呃,B加树的一个结构。比如这是ID,我把ID记下来。给他换个颜色。比如说是ID啊,完了之后呢,我们再来一个。它的数据。这是A对吧,ID对应的是A。然后的话呢,它是怎么把这个数据连起来的,我们说它是通过这个,呃,通过下标去找的,对不对,那么这个数据之间的必然是有一个连接的一个关系,它怎么连接呢?这边其实跟我们之前的一个结构非常像啊,咱们之间加号里边讲的一个集合里边结构,大家来看一下它是什么东西,就这这边呢,它会有个指针啊。它会有一个指针记录下一个数据的一个位置。这边会有个指针,好记录下一个下一个记录的位置啊。
08:11
然后。然后我把它再复制一份。这比如说第二个。然后第三个。这是2B对吧。三岁。看,然后他们怎么串起来呢,就是说我怎么知道一完了12,二完23呢,我这边有个指针,指针就相当于它的一个后继指针,这个后继指针的话呢,会记录它的下个节点,也就是说通过这个指针。连到二,从这个指针连到三对不对,它是这样一个结构存储的啊,也就是说你这个1A2B3C,它实际上在我们的数据库里边,它是这样一个一个存储的形式,对不对,那你大家看一下这个东西是个啥。是啥?是不是跟我们之前的链表是一样的,对不对,它的结构跟链表是一样的,链表是不是也是这样的,它不是说连续内存空间,而是用指针去把不同的内存空间里面的数据是不是串起来,对不对,它其实就是一个类似指针的这样一个结构啊,所以它在。
09:12
数据库里边这个数据呢,其实是这样存储的。来,我们来记一下啊,数据存储。的内部结构。内部结构内部结构。类似一个类似于指针啊,类似于什么呢?链表,链表的形式通过指针。通过指针关联。不同的数据。好,这是我们这张图啊。对吧,比如说MY呢,会在磁盘中开辟一些空间来存储这些数据。分别存储它的主件ID以及其他的字段,比如说A啊,如果说你有其他的这个数据的话,那就往后存就OK了,然后呢,还有一个就是这个PP的话,是一个后续指针,指向指向下一个节点,对不对。
10:06
那这种方式有什么问题呢?这种方式查询起来还是很慢的,对吧,因为大家知道链表的查询速度是很慢的,所以呢,呃,如果说是这种,呃查询比较多的话,我们是偏向于使用数组的,因为数组的话,它是不是有一个寻值公式,寻值公式可以呃直接计算出它的一个下标对不对,它是一个常量级别的啊,但是这个链表的话,如果说很长的话,你需要去编利,假设我们有10万这个数据在链表里边。对吧,那你运气好的话呢,是第一次就查到了,运气不好你要查10万次是不是才能查到,因为他挨个往后编利嘛,对不对啊,所以这种形式大家可以看到并没有去解决我们这个问题啊,好像并没有说他就能提高我们的一个查询效率,还是很慢啊,对吧,别着急,这个就是我们后面要引出的B加数啊,为什么要使用B加数这样结构,就是为了解决这个问题的。所以说这种形式,当数据特别多的时候,查询还是会很慢的。
11:00
当数据这种形式。这种结构吧,当数据量特别大的时候。出据量很大的时候,查询还是会很慢,还是很慢,对吧,那么怎么解决呢?这是链表的个缺点嘛,到这儿也是它的一个缺点,怎么解决呢?买色怎么解决呢?啊,它是这样去解决的,买circle如何解决?我们在MYSQL里边呢,是有一个配置的一个概念的,MYSQL中就是分页,就是页的意思啊中。有一个什么配置的概念。配置概念就相当于给这个数据分页嘛,对不对,相当于给数据分页。进行分页。对不对,相当于给数据分页,把一部分数据放入到一个配置当中。数据存入一个配置中。对不对,然后呢,是不是再查配置,先查配置再去查数据,这样的话是不是等于给他上面加了一层的这样一个关系。
12:00
对不对,加层关系之后,你先去找上层,然后再去找这儿是不是就相当于一个分门别类的一个管理啊,对不对啊。嗯,我们来看它的结构怎么样的啊,如下所示,我把这个图给你画一下。把这图给大家画出来啊呃,我这边再加几个。好,就画这么多吧。这个是四。6F对吧。OK,好。所以说假设我们这里边有这么多这条数据啊,那这些数据的话,肯定都是通过指针呢去连起来的,对不对,所以这就是我们现在的一个结构,那么我们这个配置是啥意思呢?配置的话呢,就是给。
13:01
把一些数据呢,存到一个配置里边,假设呢,我就把我我我这个配置啊,假设我就呃把两个数据呢,存到一个配置里边啊,这边我们只是做一个类比。OK,好,这个东西,这个东西就要配饰啊。这个东西我再给你换个颜色吧,看起来比较清晰。这个东西就是就是一个配置。对吧,这这玩意儿就是个配置啊,蓝色这个东西好,那么。是不是第二个配置我就给它放这儿,哎,这个花有点大啊。缩小一点。OK,这样差不多。是不是把把第二条数据啊,把把后面这两个数据345是不是放到第二个配置里边,对吧,然后呢。然后呢,这个五六,我是不是再再来一个配置。对不对,它就这样存储的,所以这这三个都是配置。
14:02
是一个页,是一个页的一个信息,对不对,好,就是这样一个结构。对吧,这样一个结构。然后的话,我们来说一下这个每个配置啊,它的一个大小。因为我们说你要把数据存到一个页里边,那你这个页到底是多大呢?我能存多少条数据呢?对不对啊,这边它有一个大小。每个配置。每个配置可以存储16KB的数据。对吧,一页里边可以存储16个KB的数据,这这个一个页里边存储多少条记录,就取决于你的你的这个数据,你的这个字段的这个大小,以及你你这个你这条记录里边到底包含了多少条数据,对不对啊,所以说我我反正一页能存这么多对吧?那你就看你单个的这个这条数据它的大小是多少,那是不是就可以换算出能存多少条数据啊,对不对啊。这样的话呢,就相当于给这个数据呢,建立的一个上层的目录。
15:03
这样就相当于给这个数据了,是不是建立了。上层目录。对不对,上层目录啊,所以呢,我们在查找的时候呢,就先找这个。大目录。先先找这个大目录。然后的话再找具体的数据。对不对,这样的话呢,是不是能提高它的效率啊,假设因为我们这边这个图啊,给大家画的比较简单,所以我们一页里边就放了两条数据,假设一页里边假设100条数据,对不对,100条数据,然后你现在要查找的是,呃,比如说第。200多条数据,那两百多条数据的话,你怎么办呢?如果说没有的话呢,你是不是得挨个去找,对吧,从第一个开始一直编辑到200个,那如果说有页的话呢,是不是直接去第三页去找就OK以了,对不对,因为前两页是不是肯定是200个都在前两个呢?这这里边儿是100个,这里边是另外一个100个,那从200开始以后的是不是在这儿,我是不是直接去这儿找就可以了,是不是就跳过前两个了,是不是速度就会比较快了。
16:05
对不对啊,就是这样一个概念啊。好。然后的话呢,我们说呃,那么我们就具体来看,假设我要找200多,200多的话呢,怎么它就能跑到第三页,它其实是这个MYSQL呢,给这个配置呢,也提供了一个查询配置的一个目录啊,就相当于我给他也提供了一个目录MYSQL。给配置呢?也提供了。也也提供了。快速查询的。配置目录。对不对,因为这个配置也有个目录,所以说我就可以非常清楚的知道,快速的知道你要查的数据在第几页,然后我就直接去第几页去找就OK了。来,我们把它下画下来,如下所示,把这个图呢,给大家画出来,所以这张图我们慢慢画着,这个B加数的这个概念啊,它就出来了。
17:01
它是怎么预存的?我们是给这个。给这个配置呢,我也给他建立了一个这个相当于是一个目录啊,给这个配置也建立一个目录,就是配置相当于数据的目录,然后呢,配置上面还有他自己的目录,那怎么去记录这些。呃,数据呢,比如说这是配置一对吧,配置二配置三嘛,三页好。怎么记录呢?我们是把配置一里边的第一条数据,它的ID,还有它的指针记录下来。所以我是把这两个东西取出来。我是把这样东西取出来啊,然后给它组合起来。给他存到我们的。这个配置目录里边。讲到这儿。讲到这儿啊好,然后的话,第二页的话,我也是把第二页的第一个元素它的。它的ID呢和它的指针取出来。穿进去。
18:00
进去。同理,第三页是一样的。我把第三页第一条。把这俩取出来,给它存进去。对不对,OK,这里边儿是不是还有可能有其他的对吧,还有可能会有其他东西啊。就是我们这个这个配置的目录呢,它肯定也是很多的,因为我们这边肯定还有其他的这个配置嘛,啊,所以说我在后面再给他来一个。假设是这个,因为我们这个目录是不是它也会有一个呃容量的对吧,你不可能说。把所有的这个配置全部放到一个目录里边啊,它这个配置,它配置的目录它也是有一个容量的,所以说我们也只能把一部分的这个页里边的第一条数据是存进去,然后这个存够之后呢,是不是再开启第二条对不对啊,然后这里边儿的话呢,可能就会有很多的这个。呃,配置里边的这个手机录啊手地址。
19:02
假设就这个样子啊,这就这后面就相当于省略很多了啊,它就有这么一种形式,然后的话呢,我们查的时候先去这儿去查,对吧,咱们先在先在这去找,然后我们就可以通过这个。呃,EP是不是找到第一页。对吧。对吧,然后通过这个什么呢。3P找到第二页啊,通过5P找到第三页啊,这个是不是有点开车的嫌疑啊,什么1P3P5P也好啊。对不对,是就是通过这样一个方式,是不是找到我们对应的这个配置,进而去找到它的,呃呃,进而再去查找它具体元素啊,对不对,那么它是怎么找的呢?来这边我们先记一下,我先把这个图给大家画出来。把它的过程呢记录下。这是它的图啊,然后这边怎么记呢?它是把每一个配置里边的第一个ID加指针存入到配置目录中。
20:03
八。哪个?配置中的。第一个。第一条数据第一条数据。的ID加指针。ID加指针。给他存入。存入什么呢?配置目录中啊,就上面那个东西,我们叫配置目录。存储配置目录中。对吧。就是这样一个对应关系,1P对应的第一页,2P3P对应的第二页对吧,5P对应第三页啊是这样一个关系,然后我们在查找数据的时候呢,先去找这个页数。查找数据的时候。先找到。它的页数。它的配置相当于现在找它配置啊,那怎么找呢?比如说我现在要查找ID等于四。的数据对不对,那ID等于四,这个数据我们应该怎么找呢?大家看一下啊,看这个区间嘛。
21:03
A等于四,你看现在这个ID是不是135对不对,那四的话是不是刚好在三和五之间,四的话是三和五之间,是不是这么一个关系,然后的话呢,它是不是要大于三并且小于五对不对,那么它肯定就在第二页当中了。对不对,肯定在第二页中的,因为你第三页是不是直接从五开始的呀,对不对,所以第三页只可能是5678这样的一个数据啊,对不对,然后第三页的话呢,是不是肯定345从三开始,然后这边是不是到五,那么你这个四在他俩之间,四的话呢,是不是肯定在第二页,因为第三页的话,它最小的是五嘛,所以它一定是在第二页,是不是我就快速找到它了。对不对,快速找他。假设你要查ID等于六,ID等于六的话呢,那是不是肯定就在第三页啊,对不对,因为你这个可能就是从七开始了,对吧,然后六是不是要小于小于七嘛,那这个最小日期,那六是不是肯定在这儿第三页对不对,所以说我们是通过这样一个,通过这样一个去找它的区间的一个关系,是不是就可以快速的判断出你当前这个数据到底在第几页。
22:01
然后找到第几页之后呢,是不是再进入到我们这个页,呃,这个配置里边是不是再去找它的数据就可以了。对不对,是不是等于多了一层查询嘛,多了一层查询是不是可以提高它的效率啊。所以说我们要查找A等于四的数据的话,它肯定是。他肯定是在三和五之间,然后他肯定就在第三页,对不对,就这么一个关系啊好。先找到它的配置,然后呢,再找到。再进入这个配置中查找具体的数据。对吧。就是这么一种形式啊好,那这边我们来说啊,同一个这个呃,配置目录里边,它也是可以去存储16KB的数据的。然后呢,一个配置目录中。也可以存储。16KB的。十多KB的数据。对不对,那么有的同学可能会说了,如果说我们是海量数据啊,如果是海量数据。
23:03
对吧,比如说千亿级别的啊,啊没有千亿级别,千万级别百万级别这样一个数据,对吧,这种我们都比较大量数据叫海量数据很多。如果是海量数据的话呢,是不是配置目录也会有很多啊配置目录。也会有很多层。对不对,哎,是不是这样的话呢,查询起来可能也会比较慢,因为假设假设我们这个配置目录,假设我就有1万个目录,对不对,那你是不是还得去。挨个去找这1万个目录里边,我这个ID到底是在哪一个目录里边嘛,对不对,你是不是还得去找,速度还是很慢,所以说我们怎么去提高它的查询效率呢。那借鉴我们这个页跟呃,这个目录的一个关系嘛,是不是我再给他在上层再加一层目录对不对,这是一层二层,是不是在上面再加一层,先从第三层找,是不是先找到第二层,再从第二层找到第一层吗?对不对,所以说我们就这样一处理啊,我们就这样一处理了。所以说如果说配置目录也会有很多层的话呢,我们为了提高查询效率。
24:07
为了提高查询效率,我们就给MYSQL,他就给。给这个配置目录再加了一层目录。对不对,再加一层目录,先找最最上层那个目录,通过那层目录快速找到配置的目录,再从配置目录里边快速找到配置,再去找这个数据对不对,所以说就这样结构啊,我们把它图画下来,图下所示,好,我再给你再加一层,就等于在这儿再嵌套一层。对吧,在这我们再见到一层啊,这里边儿存的。这边我就不写具体的东西了。比如说啊,我就一这个是七。好,假设我这边就放这两个吧,大家知道这意思就OK了啊。
25:00
我再换个颜色OK,好,然后的话呢,它是通过。这个是不是首先找到这个配置目录对吧,然后通过这边找到这个目录对不对,这样一个关系,先从这儿开始编历,先找到配置目录,再通过配置目录找到配置,再通过配置是不是去找数据。是这样一个三层的一个结构啊。就是这么一个三层的一个结构。然后它这个它这个过程都跟我们下面这个一样,比如说你先要找这个六对吧,六肯定是在五和七之间的嘛,对吧,它是大于五,然后呃,小于七,或者你找四对吧,四的话是大于三小于五的,那么肯定是在第二页,因为三是第二页的一个起始嘛,所以。I等于四,这数据肯定在这儿,通过这种方式找这边也是一样的道理,从这找到这个配置目录是一样的啊好。所以就等于又又给他加了一层。等于又加一层,然后呢,我们要查找一个数据的时候,就一层一层从上面开始分级查找,对不对,那这种结构大家画出来之后,你看它是个啥。
26:04
你看是不是越画大家会感觉它越是一个竖的一个结果。对,不是不是一个数,这是根节点,这是不是相当于两个呃子节点,然后这个子节点里边是不是有三个叶子节点。对不对,是不是一个数的一个结构,这个东西就是什么呢?这就是必加数啊这种结构。你看非B加数是我们一步一步画出来的啊,这种结构就是B加数。B加数。对吧,这种结构就是比加数。那么可能有同学会问了,如果说三层也不够怎么办呢?那是不是再往上累加就可以了啊?但是呢,其实呃,它理论上是这样的,可以一直往上里加,但是呢,就是目前的数据量的三层就足够了,一般的我们的应用它不会超过两层,一般两层绝对足够了啊,对吧,这个数据量大家是呃,绝对是没有任没有任何问题的,不会说三层都不够,一般的话两层就搞定了,我们可以大概推算一下,呃,你看这个三层的话,它一共能存储多少套数据啊,我来简单推算一下。
27:03
好。假设,我们假设。假设一条记录。的这个呃,空间啊,假设我们给它小一点吧,32个字节。就是我们一条记录。我们需要用32个字节来存储的。就比如说我们这个对吧,这个就很小了啊,当然你这个实际开发里边这个可能会更大一些,我们这边只是做一个推算嘛,对吧?好,那么我们就来推算最底层的一个一个单元呢,可以存储多少多少条数据呢。最底层的就是这一层啊,这层配置这一层最底层的。一个单元。可以存储数据多少条,你看我们说配置里边,配置里边可以存储16KB的,对不对,那这边我们来算一下嘛,16KB。算就能算出来16KB嘛,乘以1024是不是变成了字节。
28:01
1024。对不对,是不是这样的话,16乘以1024个字节,它是这么一个大一个空间,然后你的医疗记录是32个字节,是不是除以32。除以32是不是就等于?等于我们的计数数啊。这边我们来算一下。16。乘以1024。除以32。等于512。对不对,也就是说我们。这个一个配置里边可以存储512条数据。对吧,512条数据好了,那么接下来我们再来算第二层。第二层的话呢,是不是只需要记录它的。ID和这个指针。所以呢,它的这个字节肯定更小。然后第二层。第二层,只需要记录。ID加P对不对,那么我们这个字节共享啊,假设。
29:06
假设是。六个直角。假设是六个字节,那么它可以保存的这个数据是多少呢?说。可以保存的。数据是。还是还是去算一下吧。因为我们说这一层的话,它是不是也是16KB的啊,配置目录这一层,所以说16乘以1024是不是再除以多少,除以六嘛,除以六就可以了,等于什么呢。这是多少?16乘以1024。除以六。对吧,2730啊,大概有这样一个数字,我们这边只是一个估算,OK,好再来第三层。第三层是不是也是一样的,也存储是它第三层的话呢,存储的话跟这个,呃,第二层的这个形式是一样的啊,所以我们也假设它是这个六个字节。
30:04
那么第三层。第三层存储的数据。是什么呢?跟这儿一样啊,第三层跟第二层是一样的,也是这么大。对不对,好,是这么一个关系,第一层512条数据,第二层的话呢,第二层每个单元里边可以存储2730个,然后第三层的话,每个单元里边可以也是2730个,对不对,然后总共就这三层结构,我们一共可以存储多少条呢?不是说把这三个加起来,是把这三个层三个乘起来啊,一定要去把这个搞清楚。就等于这边我们一个是不是可以存512个。对不对,然后这里边的话呢,是不是可以存2000多个,然后这里边儿每一个是不是对应一个512,每一个都对应512吧,每一个都对应572对不对?所以他们一个乘积的关系啊,这边2730个第三层的话,是不是每一个都可以对应第三,呃,可以对应第二层的2000多个,然后第二层的每一个是不是都可以对应第三层的500多个。
31:01
对不对,所以说总共的数据啊,总共可以存储的数据。是把它们三个乘起来,512乘以。512。乘以2730,再乘以2730,当然我们这个给的比较大啊,有可能算出来这个数字比较夸张啊,因为正常的话呢,呃。一一个字段呢,一条记录呢,它可能会包含很多很多个字段,它可能不是32,它可能是更大,对吧,比如说几百个KB,几百个B是几百个bed是有可能的啊,但是呢,这个呃,它的数量级不会有有一个很大的变化,我们来试一下看多大啊。500兆。成影。2730,这是很大的一个数字,再乘以2730对吧,你看这么大一数字。对吧。这是多少呢?是不是38亿。对不对,大约约等于38亿啊,约等于38亿。
32:04
三十八一条数据,也就是说我们这个三层的一个B加数的一个结构,大致可以存储38亿条数据,就当然前提是我们一条数据它是32个字节的啊,这个比较小,但是如果说你这个很大的话,这个。它肯定也是一个亿级别的一个一个数据量啊,它不可能说太小,它一定是一个亿级别的数据量,对吧,你想想一个数据库里边存1亿多条数据,是不是已经到达一个极限了。所以呢,一般来讲这个三层啊啊绝对是足够了,一般来讲我们的应用就两层就可以了,对吧,几千万条数据是没问题的。对不对,好。所以说这个呢,就是我们呃,这个数据库索引,它的一个B加数的一个结构,所以大家可以看到B加数,它就是一个类似于。呃,一个数的一个一样,这样一个数据结构对不对,通过这种数据结构的话,我们可以把这个。数据呢进行分层,分层的目的呢,是是为了快速去查到这个数据,因为我们说单纯的这个。
33:02
数据呢,它在数据库里边排布,它是类似于一个链表的形式的,列表形式,查询速度比较慢,所以呢,我就在列表上面给他加了一个目录,先去查找目录,再去查找数据。多了一层的话呢,它的效率会提升很多,如果数据特别大的时候,我再给他再追加第三层。对吧,包括你理论上第四层再往上追加都是一样,都是为了去提高它的查询效率,OK吧,所以这个就是我们数据库索引的一个必加数的结构。
我来说两句