00:00
好,那下面的话呢,咱们就看一下如何在代码层面,咱们呢,去创建这个索引啊,那么咱们在讲上边的时候呢,提到过创建约束,咱们创建约束的时候,当时有几种方式啊,回顾一下是不是一种方式呢?就是我们在创建表的时候呢,把这个约束加上是吧?Create table的方式,另外一种呢,就是我们在创建表的时候呢,没有加约束,那我们还可以呢,是不是通过后期呢去al table的方式呢,去添加约束,包括呢,你删除约束都行,对吧?这呢,我们提到这个两种场景,那么在我们这个索这块呢,其实也呃大同小异,咱们呢,也可以在创建表的时候呢,把这个呃,所以呢给它加上,这个是第一种方式,那如果说你在创建表时没有加,那怎么办呢?咱们也可以呢,后期通过叫al table的方式呢,去把我们这个索引呢,给它添加上。那当然你也可以呢,去删除对吧?OK,那么另外一种的方式呢,这里边儿多了一个啊,我们还可以呢,去通过create index的方式呢,咱们去创建一个索引,然后把这个索引呢,作用在啊已有的我们这样的一个表上,诶相当于这块呢,我们,呃,你要说大方向上来讲呢,其实还是两种,一种呢就是造表的时候,另外一种呢,就是造表以后。
01:08
那只不过呢,招标以后呢,我们多了一种方式叫做create index啊这样的一个方式,好那么接下来的话呢,我们就先来讲一讲,在创建表的时候呢,然后我们如何呢去添加这个索引。好,那么这块呢,我们就开始来具体的讲解,那这块讲解的话呢,因为这个代码呢,相对来说从上往下走的会多一些啊,这时候呢,我们要写到这个呃,叉L里边呢,就保存不下来了啊,咱们呢可以写到这个色Q当中,前面一些章节当中啊,因为我们都是零零散散一些测试,所以呢,我们就没有写在这个circleq要里边啊,对应我们这个课件里边写的也都比较详细啊,大家呢下来可以参照一下这个课件。那这儿呢,我默认呢,我已经是连接上这个150的这个MYS8.0了,咱们还可以呢,再去把这个呃160的这个也连一下啊,这个对应的是MYS的5.7是吧,咱们在这块演示的话呢,我就在这个150里边去演示的,好这块呢,我们写一个叫零一吧,咱们想讲解的是关于这个诶索引的一个创建问题,对吧。
02:04
好,那这块我们把它呢,CTRLC啊CTRLS保存一下啊,这个咱们放在是MYSQL高级里边的这个代码的这个位置啊,CTRLV啊,咱们粘一下。啊行这就可以了啊好,那么关于这个索引呢,创建的话呢,咱们这个刚才说了算是这个大方向来讲啊,咱们说叫第一种吧。啊,第一种。啊,第一种呢,我们说呢,叫在的这个时候呢,咱们去添加这个索引好的,那么在create table的时候呢,添加索引的话呢,我们又大方向上呢,分成两种情况啊,什么情况呢,咱们在墙边讲这个约束的时候呢,其实也提到过这个事儿,当我们给一个表中呢,去创建约束的时候呢,其实有一些约束会自动的帮我们添加索引啊这呢,你看我都举这个例子了,咱们把它呢直接拿过来啊,因为比较简单啊,诶CTRLV粘过来。粘过来的话呢,咱们当前这里边儿,嗯,F5刷新一下,咱们先创建一个数据库吧。
03:03
啊,这个我们去create。啊,这个data base,咱们来一个DB test2吧,好创建一个数据库啊,走起,然后呢,我们去use一下这个DB test2这个数据库。好,走起。行,那么在这个DB test2这个数据库下,咱们现在呢,去创建两个表,那就对应的是我们这两个表,这个呢叫部门表,有个department ID跟这个department name,这呢是一个主键,好周起啊运行。我们创建完以后的话呢,来F5刷新一下,在我们这个第一批这个表当中,大家就会发现呢,它你看本身就存在一个索引了,相当于呢,就是我们这个主键约束啊,咱们这个主键约束对吧,对应的这个字段上呢,自动的就会给自动的就会给我们去添加这个叫主键的一个索引。啊,这是一个,然后的话呢,我们再创建一个叫员工表,有员工ID,员工内员工的这个啊部门ID这块呢,我们还创建了一个外建,这个外建呢,就是让我们自己的这个字段呢,关联我们这个部门表里边的这个部门ID这个字段,对吧?好来咱们把它呢,诶注意这块还有一个细节,就是我们这个员工名啊,它是一个unique的约束。
04:13
来,我们再执行。执行完以后的话呢,来刷新。针对这个员工表,大家你会发现呢,这里边有三个索引,第一个主键,第二的话呢,就是我们这个有的这个约束对应的这个,呃,EP name呢也有一个,呃索引啊,我们叫做唯一性索引。啊叫唯性索引,然后对应的话呢,我们这个外键上面呢,它也有一个这个索引,那这个相当也是一个索引了啊啊这块你看这个名字,由于我们这个unique这个约束呢,没有去给这个约束起名,那所以呢,这个约束名呢,其实就是我们这个字段名,那进而的话呢,我们这个索引名呢,也是这个字段名。那我们这个,呃,外界约束给我们起的这个这个这个索引名呢,它就是用我们这个约束名呢去充当的,你看是吧,一看这块呢,就能看出来啊。行,嗯,这个呢,是我们说的这个场景,通过这个呢,咱们想说明的点是什么呢?在create table的这种场景下呢,我们去这个诶。
05:08
提供这个索引的话呢,其实这是一种隐示的方式是吧,哎,我们说呢,在啊这个就这样写吧,哎,隐示的啊这个方式。啊,去创建。哎,去创建这个,哎,索引这里边我们提一下,就是在声明有这个主见约束,这个唯一性约束啊,还有我们这个外键约束的这个字段上。啊,这个会啊自动的,哎是不是添加。来添加,哎,我们这个,哎相关的这个哎索引啊OK。行这种方式的话呢,我们称为呢,叫隐示的方式呢,去创建索引啊,这个咱们在上面的时候呢,其实提到过,那下边的话呢,咱们是不是就开始讲这个叫显示的方式来创建了啊显示的哎,这个方式啊创建。
06:01
好,那显示的方式来创建的话呢,咱们那比如说讲第一个吧,说一个普通的,那咱们就去创建。啊,这个呢,还叫普通的一个诶索引啊,创建普通索引跟创建其他的这种索引啊,其实大体上的格式啊是一样的,来我们看一看,整个语法是这样子的,叫create table啊表明下边呢,就是你这个字段和字段类型,接下来的话呢,就是指明啊,就是你字段要很多的话呢,就一个一个的先把字段呢先说明在我们创建表的这个,最后指明你这个索引的一个情况。啊,先来看这块儿吧,这个叫index,或者呢,你用key,诶这块我们说一下,咱们创建索引的话呢,可以用index这个关键字,也可以用key这个关键字啊,但是我推荐大家呢,你要自己写,你就用index,那如果说我们这个看到别人写了啊,你知道了用key它表示的意思呢,还是index啊就行。好,然后后边呢,就是我们这个,呃,索引的这个名字,然后接下来就是你作用的这个字段啊,你要是多个字段呢,联合索引这块呢,就用逗号隔开就行,那有的时候呢,我们比如这是个work char类型的,我们也可以指明呢,就是只取前20个,比如说作为它的这个索引的创建,诶所以可以有一个长度,然后后边这个呢,就涉及到我们这个索引,这个在存储的时候呢,是一个升序还是降序的这样一个情况了。
07:14
后边呢,我们讲的这个,呃,这个支持叫隐藏索引,我们其实还可以在后边呢,去加上这个叫invisible啊,或者叫visible啊,也是在后边这个声明的。行,那我们说这个索引的话呢,如果大家没有给这个索引起名的话呢,也行,没起名呢,就默认就用我们这个字段名呢去充当啊,这是一个,然后呢,诶我们通过这样的方式创建的,其实是普通索引,你要是特殊的,比如说这个special啊,空间索引啊,全文索引,还是我们这个唯一性索引,那你就在前面呢,加这个关键字就可以了。啊,那那你像这个主键索引怎么办呢?哎,前面去加这个primary吗?哎,不是的啊,主键索引呢,其实就是用主键约束呢的方式来创建的。行,咱们这块呢,先举例说啊,嗯,回过来咱们现在呢,想创建一个普通的索引,对吧?啊,这个表的话呢,咱们不妨呢,我就拿这个现成的这个来吧,来CTRL一下。
08:04
哎,把它呢这个拿过来,哎,咱们先这么着封起来,这个表的话呢,创建难度不大,咱们先简单看一下book表,这是book的ID book的名字啊,这个是WHAT100是吧,Author啊,这个作者啊,可能有好几个作者联合在一起的,所以是个复数啊,Infer信息,然后这个叫comment啊,Comment就是一个评论啊,说明啊等等的,然后这页publication啊,就是出版的这个年啊,这呢就是我们现在的这几个字段,我们呢,想去创建一个普通的索引,咱们就可以在这个后边这块啊,我们就创建或叫声明吧。哎,这个索引好,那我们现在呢,就是一个普通的索引,你就用index就行啊,刚才也说了,写K也行是吧,那index后边起个名字啊,比如叫index,针对于神呢,比如我们叫book name吧。啊,Book内你也可以简写啊,就是book内啊这样,然后在这里边呢,指明是针对于这样的一个字段啊,我们去创建的这个普通的缩音,那就完事了啊来选中啊,咱们还是在这个DB台词里边啊,走起。
09:06
来大家看我们是不是这个表就创建成功了是吧,那我们想查看一下,说是不是有这个索引啊,你也可以呢,通过图形化界面的方式,在这来看一下,你看是不是就有了,诶前面这个位置呢,就是我们所引的名字,后边呢,就是你作用的这个字段啊,这就OK了。行这呢就是一个普通的索引,那普通这个索引创建完以后的话呢,除了图形化界面方式,能不能通过命令行行的方式来查看呀,也是OK的啊,这个我们这块写一下通过啊命令啊,这个查看这个索引是吧,那这个呢,我们有两种方式啊,方式一的话呢,咱们就是老套路啊收。那这个table是吧,咱们叫a book。啊,这块呢,要是我们用分号收尾的话呢,这个可能展示出来会比较难看一些啊,你看这个特别长是吧。特别长这个还得往这拉,哎,这感觉体验太差了,但是咱们在这个,哎,这个图形化界面的这个社会要里边呢,加上这个杠G呢,还不好使。他报错了是吧。
10:00
那怎么办呢?那咱们就这么着吧,我把它的CTRLC一下放到咱们这个叉shell里边,咱们首先呢登录一下。哎,登录成功了,然后我们去右侧一下呢,叫DB test2是吧。哎,这样的数据库,然后呢,把我们刚才这个粘过来,咱们改成这个叫杠G啊回车一下,这呢就咱们刚才创建的这个表是吧?创建的这个表的话呢,你看这个位置是不是加了一个K啊,哎,这呢是这个索引名,这呢是你作用的这个字段,哎,那这呢,它是给改写成用一个K来表示的,咱写的是index是吧,那至少呢,说明这不是咱们自己原封不动写的啊说明呢,我们这个呢,诶所以呢,其实是起作用了。嗯,这是一种方式,还可以呢,怎么看呢,这样啊,方式二。咱们呢叫show index,然后from啊,我们这个book。这个呢,大家也记住它后续呢,大家想看查看一个表中的索引的话呢,都可以使用这样一种方式来走棋。那么结果当中啊,我们看到这个字段呢,也很多,我们简单来看一下,这呢是针对于说哪个表的啊,说book这张表里边的这个,所以名呢叫这个名啊,这不叫这个名嘛,然后作用的这个字段呢,是我们这个book name这个字段啊这呢是比较核心的这几个信息,对吧?那还有什么呢,这个呢叫non unique。
11:18
闹呢就是非啊,非有尼可啊,一一就表示的,大家就想象成是个处就行啊,这个值呢不是零就是一啊,一呢就当成是处,那就说你就是非唯一的。一二呢,就我们这个字,这个表中的这个字段啊,咱也没有说它有一个unique约束,就是你可以填重复的值的,所以这个一呢,就是人家不是唯一的意思。你看就是这个点。行,呃,然后后边呢,还有关于它呢使用的这个,呃,所以呢,类型是B加数是吧?哎,这块呢,写的不用写加号了,它表示的就是B加数的意思,呃,可见嘛,这个是可见的啊,就这样个情况,好这呢是我们说查看的这个第二种方式,那我们加上这个索引之后呢,有什么用啊。啊,用处的话呢,就是咱们在通过这个字段呢,再去检索数据的时候呢,它会提升这个效率,你比如说呢,我们现在select from一下我们这个book,然后呢叫啊where是吧,咱们这个叫a book name啊这块我们写一个叫这个叫这个Mexico高级是吧。
12:14
好,那么我们通过这样的一种方式呢,咱们去检索数据的时候呢,它就会给我们提升这个效率。啊,咱们这里边儿现在一条数据我也没写啊,大家可能就看不出来了,尤其这个数据量大的时候,我们这个加跟不加呢,这个效率呢,就差别出来了。那咱们在后边讲这个索引优化的时候呢,到时候呢,会给大家去讲很多这样的例子,比如我们加上这个这个10万条啊,100万条数据啊,我们看这个索引有效跟无效的时候呢,你看这个时间差别有多大啊,到时候我们有很多的例子去讲,咱们现在呢,先来说一下基本的创建索引的这样的一个情况啊,我就不举例子了啊,至少我们现在先这么着一下,哎,通过这样的一个工具啊,先让大家呢感受一下,这个呢叫做explain啊。这个呢,工具呢,咱们放到这个第九章性能分析工具里边呢,作为一个重点呢,去讲解一下它。
13:02
啊,现在呢,我们先把它加上,大家呢,先直观感受一下哈,走起。这个时候呢,我们会看到呢,出来这样的一个信息,这个信息里边呢,咱们详细的情况呢,到后边再讲,咱现在呢,先直接让大家呢,直观上看一下我们这个位置呢,写的说你这样的一条查询语句啊,有可能会用到的这个。叫什么索引啊,Key呢,就是索引的意思嘛,然后叫index be name,这不就我们创建的这个嘛,那实际上你用的是谁呢?实际上用的你看就是它是吧,诶通过这呢,我们能够看到呢,咱们就用到了这个索引啊相当于这呢是我们的一个叫啊性能分析工具。哎,性能分析工具啊,叫做这个a plan啊,那这个呢,工具呢,就帮我们能够查看到我们是不是用到了这个索引,OK。要没有用索引呢,那是不是就得顺序去查找了,那个性能呢,就很低行,那这里呢,我们先通过这样的一个例子呢,咱们把这个普通索引啊,通过普通索引呢,咱们把这个查看索引包括呢,如何去分析呢,咱们就先说清楚。
14:01
好,那这个呢,咱们就告一段落,那接着的话呢,咱们讲这个下一个这呢是咱们的第一个啊,下边咱们说一下这个第二个咱们去创建,比如说创建这个A唯一索引。哎,唯一索引啊,这个创建唯一索引的话呢,那咱们说有这种隐示的方式,就是我们如果有这个唯一性约束的话呢,自动的会有这个唯一索引了,那咱们现在讲这个是显示的方式,好,嗯,不妨呢,我就还用这个表吧,来CTRLCL一下,咱们把它拿过来,这个文章叫BOOK1,然后这个位置呢,咱们给它改一下,针对哪个字段我们看适合呢,去加上这个叫唯一是吧。嗯,那么每一本书的话呢,它这个评论呢,应该是不同的,对吧,那咱们呢,就针对这个字段吧,那此时的话呢,咱们就在这个前面呢,加上这个叫unique。诶叫做unique是吧,那unique index,然后呢,这个位置呢,我们改一下这个名,比如咱们叫unique啊,Index是这个,哎,Comment啊,我就这样简写了,哎里边这个字段呢,就是我们这个comment,就它那此时的话呢,它就是一个唯一性的一个缩引。
15:06
好来选中。走起。成功了,那接下来的话呢,我们通过这个叫受。Index,然后from book1是吧。来我们这时候呢,选中执行,大家看针对这个表中的啊,这个呢是我们的索引的名,这不就这个吗?然后对应的叫comment,然后这个位置你看写的是零零呢,就是false的意思,哎,这个非唯一性嘛,哎这个是false,那就是说它是唯一性的,哎我们这呢,创建的不就是一个唯一性约束嘛,哎,所以正好能匹配的上。好,这个呢,就是我们创建这个唯一性索引的这个方式啊,那么它影响的是什么呢?就是我们要是往这个表中的这个字段上去添加数据的话呢,它相当于也会有这个唯一性的一个约束,你不能放两个相同的值来举例子啊,比如insert into,哎,我们到这个book里,BOOK1里边咱们呢,就比如说哎叫填几个字段就啊ID,还有这个book,比如说name吧。
16:01
嗯,然后呢,我们再填一下这个叫comment。这样是吧,然后values啊,这个能写个叫一呃书名呢,比如我们就叫MYSQL高级,哎,咱们呢讲的这个MYL高级这个课程啊,嗯,确实呢会出书,也正在写,就是跟我这个课程内容的话呢,是同步的,都在做这个编写,嗯,应该呢得到2022年呢给大家见面了。啊,希望大家也可以多关注啊,需要的话呢,你就可以到时候看一看,那咱们也会这个这个出来的时候呢,会在相应的这个公众号呢,也会做一个推广啊,有兴趣的话你可以翻一翻看看啊,然后呢,后边呢,是这个comment啊,这个我们说啊,比如说叫诶适合啊有数据库啊,这个开发啊经验的啊,人员学习是吧。好,这样的话呢,我们就对应的这三个字段呢,附上这个值了,来选中以后我们做一个执行。那成功以后的话呢,我们也可以简单的做一个select啊,先用from一下它这个BOOK1。
17:03
哎,我们再选中呢,诶跑起来,诶是不是我们这个数据就有了,对吧?啊那么大家想我们现在呢,要把它呢,选中以后,我要再去执行可不可以啊,你看我们走起这时候呢,你发现他说WK的重复了啊,因为呢,你看这里边有个K是不是就是我们标识的这个呀。说明呢,我们唯一性索引这里边儿呢,也要求它不能够是重复的。啊,那有同学想说,哎,那我能不能放这个闹纸呢?能放不?比如这个我们就写个二吧,然后在这个位置呢,咱们就整成个闹了。哎,这么着来,我们这时候再选中再跑起来是不是就可以啊,说白了跟我们这个微性约束啊,是不是差不多呀。那就相当于我们这个唯一性索引,它跟唯一性约束呢有点像这个,呃,就互相的,就是叫什么呀?呃,你要是创建这个唯一性约束,它就会有一个唯一索引,你要创这个唯一索引呢,是不是上面也自动的会有这个唯一性的约束啊,啊就是这样子的,所以我们在这说明一下啊,说声明有啊唯一啊索引的这个字段呢,呃,在添加数据时。
18:07
来添加啊,这个数据时这个啊要保证。啊,或者你直接说呢,添加数据时呢,就是不能重复是吧。啊,或者也写成,哎,也可以写成要保证这个唯一性啊,但是呢,可以添加。来添加这个闹纸。哎,同时的话呢,我们这个尿纸呢,是不是还可以多次添加呀,哎,跟咱们前面唯一性约束呢是一样的。好,那么关于我们这里边这个唯一性约束的唯一性索引啊,咱们就说到这儿啊,这就过了,嗯,接下来的话呢,我们说这个第三个啊,咱们讲一下这个叫哎主见的这个索引吧,这个主键索引呢,不是在我们这个前面加了一个primary,也不是加primary key啊这个主索引呢,就是通过我们的这个逐渐约束的方式去进行定义的。看通过看定义。哎,主见。
19:01
啊,约束的这个方式啊,去定义这个主键索引点IG呢,我们就是这种隐示的方式了,对吧?啊,那我们不妨还拿它来举例吧,CTRLC拿过来。那这个位置呢,整个我就不要了,哎,把这个逗号去掉,然后在这个位置呢,我们加上一个叫primary。Key没问题吧,啊,这个你要愿意再加上一个叫autorement呢,你就给它加上啊,这都还好啊行,那此时的话呢,我们把这个呢,哎,这个比较BOOK1了,BOOK2啊选中以后啊去做执行。然后呢,我们再接着呢去show一下啊index。选中。走起那行,这时候呢,我们可以看到呢,这里边有一个index啊这块你看就primary是吧,然后呢,对应的是我们这个叫book ID啊这就说清楚了,好,那我们通过主键呢,去查询的时候呢,自然而然的这个效率呢就会比较高一些啊那么顺便呢,我们再说一下啊,咱们要想删除这个主键索引,哎,那就是因为你是隐视定义的嘛,删除它怎么删呀,咱是不是也可以呢,通过删除主键约束的方式啊啊这块啊通过删除。
20:07
啊,主见啊,约束的这个方式呢。哎的方式,哎删除我们这个,哎逐渐的索引好,那怎么删,还记得吗?我们在上篇当中讲到的对吧,哎,Out table,我们叫a book2,然后呢,叫drop,哎什么呀,哎,Primary。是吧?哎,Primary key,因为我们主件呢就一个,所以呢,这里边也不用说明主键名叫啥了,直接呢就是删除主键啊就OK,哎,走起。啊,说这里边呢,哎,我这是不是写错了啊,Table它drop啊,Primary key啊,没写没有问题吧。啊,这里边呢,是有这个原因造成的啊,咱们在讲这个auto increment的时候,咱们讲这个上面的时候说过,说呢声明有auto inrement这样一个声明的这个字段啊呃,必须呢得是一个primary key,或者呢,你是一个。
21:04
啊,这块呢,我刚才自己这个多手啊,这个创建了这个生命那个autorement,导致我们现在这个组件呢,不让删了是吧,这有点麻烦了啊,咱们这个换一个吧。啊,换一个啊,然后再把再把这呢改成是,哎,我我这样一下啊,先drop一下咱们table,哎,Book啊。然后把它那删掉啊。嗯,可以了,行,这个我也就不要了,咱们重新的再去创建一下我们这个表。然后呢,我们再去收一下这个index啊,这不受影响,仍然有对吧,然后呢,我们再去呢,删除咱们这个主键啊,再走起。啊,这就可以了啊,然后删完以后的话,我们再去受啊,自然而然的这块就没有主键了,哎,那你这个主键的索引是不是也就没有了啊好的,这就我们说的这个方式啊,接着我们再往下看啊,这个该第四个了,这呢叫主键索引,好主键索引完了以后呢,我们再比如说创建啊,看看还有什么呀。哎,咱们创建一下,比如这个叫哎,这个叫单列索引吧,这个呢,其实好像没啥说的啊,咱们前面创建的呢,其实都算是这种单列的,里边呢,就只有这样的一个字段嘛,哎,这就算是这个单列的了,嗯,那要创建再来一个单列吧,CTRLC。
22:17
啊,再拿过来啊,这块我们比如说针对这个叫book name吧,啊CTRL一下我们这个放到这儿说unique index啊,这个我们就是一个index是针对我们叫book name。啊,我们去创建的对吧,好,那时候你就这个,我们改个名啊叫三。啊,这就完事。嗯,挺简单的是吧,那创建完以后的话呢,你这块去show啊这个啊index啊BOOK3。A book index from。哎,不三。啊就这啊就这一个,哎,那由于呢,我们这是个单列的,其实这个呢,大家你会看到在index当中,它这个序号呢,就是一啊那样联合索引的话呢,它就不是一了,来咱们接下来呢,就说一下这个。
23:05
嗯,该五了是吧。来创建啊联合啊这个索引啊,就是整个这块呢,其实感觉挺无聊的啊,大家呢,就是哎快速的跟我一起呢,这样过一下就行创建联合索引,比如说我们针对这个ID和name呢,我们建一个联合索引,那这个诶这个我们上面是一个unique的是吧?啊unique就unique吧,啊都行,就是诶反正你是单列的嘛,啊然后这个位置呢,我就把这个和比如去掉了这个index,咱们这呢叫四。啊,Index这块呢,我们加上一个叫a book啊,比如叫小线ID,然后book name,咱们再加一个啊叫infer。看我是不是三个字段啊,那这个位置呢,我们就可以呢,比如我叫啊in这个咱们叫multi吧。啊,这样ul,然后呢,这个叫book ID啊,还有这个叫book name啊,咱们可以都加上啊,Book in for,那通过这个呢,我们就直接能够看到呢,说你这是几个字段的情况啊,就会更好一些,当然了,我们大家在起的时候呢,其实完全可以呢,你就这个,所以名都不起也是OK的啊,所以名要不起的话呢,这个时候我们说默认的话呢,就拿这个本身这个字段呢去命名了,呃,但是建议呢,大家还是起个名啊,建名之意嘛要好一些。
24:18
来创建。啊,周琦。此时的话呢,我们再去做这个show啊,Show index啊,我们叫BOOK4是吧,From啊又丢了。啊,选中呢,我们执行一下,这时候呢,大家你会发现呢,你看我们这里边呢,是不是只有这一个缩引,但是呢,是不是有三行呀,针对我们这个BOOK4里边同样这一个名的,你看它的序号呢,是123,这个序号呢,大家不要呃说呢,是不是随便呢这块来的啊,我们再再执行一遍,是不是就换序了,不会的啊,这个序号的话呢,一定是有严格顺序的,就是我们在关联这个字段的时候呢,第一个它就是一,这个呢就是二,这个呢就是三,一定是非常严格的。
25:02
啊,为什么呢?因为呢,咱们大家也注意啊,我既然创建这个索引,是不是一定会生成一个B加数啊,那咱们这不是也写了B加数嘛,那生成这个B加数的时候呢,我们呃,是不是涉及到了,不管你是叶子节点也好,还是非叶子节点也好,咱们都是按照你这个字段呢,是不是进行排序,那这时候排序怎么着啊,一定是先排我们这个不ID我就简写的啊不ID呢?呃这个不相同的话呢,就是这是一,这是二,这是三,就这样排,如果呢,比如出现了呃四个一了,然后呢,在都是四个一的情况下呢,我们再是不是接着排里边的这个book name啊。哎,从小到大的顺序去排,那假设两个book格内呢还一样了,那接着我们再按照这个音符呢,从小到大的顺序再去排。哎,那就是这样的一个道理,所以呢,是先按照谁来排,再按照谁来排,这个呢都是有严格的说明的,就是看你这里边的先后顺序,这个影响的是什么呢?影响的就是我们这个索引啊,到底能不能够起作用的啊这个点,那你比如说大家看啊,我呢去select星from一下咱们这个BOOK4,哎,然后呢,Where你看我这咋写啊,我叫book ID呢,等于1001吧,然后and这个诶book name等于哎我就诶我就简单写一个叫。
26:15
小麦收购了啊。好,这样写的,那么我问大家,你觉得我们这样的一个写法呢,能够使用上我们这个索引吗?有同学可能说,哎老师不能吧,因为你这里边还少个iner呢是吧?哎那么真实能不能呢?哎咱们看一下啊explain咱们后边呢会讲这个,哎关键字的一个使用来,我们这时候走起你会发现呢说诶这块诶好像用了是吧?哎那这时候呢,确实是用上我们这个索引了,哎这呢就有一个叫最左前缀原则,我们呢,使用上你这个最左边这个字段了,然后第二个字段呢,你也可以用,第三个字段呢,你也可以用上。啊,就是没有第三个是是OK的啊,我们只用的第一个和第二个是行的,诶这呢就相当于我们是一个这个呃分析啊呃怎么着就用不上我们这个索引了呢,大家能想到吗。那现在我们提前呢,把这个知识点咱可以呢预知一下啊,比如说呢,我把这个不开定呢给干掉了,你想想我们这种写法呢,能够用上我们这个索引嘛,来走起你会发现,你看这时候是不是就变成闹了。
27:10
大家能理解吗?啊,你看整个这个内容啊,都是基于大家对这个B加数的一个理解,我们是先按照这个不ID呢进行排序的啊,然后呢,相同的话呢,我们再按照不可内幕进行排序,你上来呢,不看ID直接找内,这是不是就乱套了,这个索引呢,根本用不上。啊,所以说呢,我们这时候呢,又没有别的这个索引,所以这块呢,不就是闹了吗。啊,除非呢,你在这个book name上呢,你自己单独的又建了一个索引,这时候呢,你可以用你自己单独这个索引,但是这个联合索引呢,目前是用不上的。啊,大家呢,体会一下咱们的,呃后边呢,讲这个索引优化的时候啊,在我们这一章的时候呢,我们会有很多的这个呃例子啊,呃索引失效的这个场景,这呢就是其中的一个啊,我们要遵循最左前缀原则。这个呢,我们就先说到这儿啊,这个是组合的这个索引,然后接着啊,看第几个了,看第六个啊。
28:03
哎,第六的话呢,我们来说一下这个叫什么全文索引是吧。在创业。哎,全文这个索引这个呢,大家做一个了解就行,那首先呢,我们来看一下这个课件里边。哎,创建啊,这个全文索引,这个首先的话呢,提到我们这个全文索引,它只能够是呢,诶在我们这个叫char类型的,我char类型的或者是text的,哎这样的几种类型上呢,去做这个创建啊,这个大家要注意一下,就意味着你看我们这块呢,去index真的是起的名,这个infer的话呢,它得是我们刚才说的这样的几种类型。啊,这个要注意一下,然后呢,你在在前面加上一个for text,这就表示我们这创建的就是个全文的一个索引了。哎,这比较简单是吧,诶后边这块呢,加上这个叫MY呢,其实这个你就看具体的这个版本了啊,因为我们说那这个MY呢,是比较早的支持这个全文检索了,呃,咱们后边呢,是不是才在五点,呃五点几啊。
29:00
5.6.4我记得是是吧,哎,以后的话呢,它在in DB当中才支持这个全文检索了啊,目前呢,咱们要用的是5.7的话呢,这个你可加可不加是吧?哎,你比如说我们这块呢,把它CTRLC一下咱们拿过来。哎,放到这儿是吧,哎,这时呢,我们针对是这个音符呢,来做这个添加,大家也可以在这个音符后边呢,咱们加上一个小括号,比如我就写上一个叫50吧。哎,那么明明我们这音符呢,写的255,你这写50是什么意思呢?就是我们这个呢,字段你挺长的,我们建这个全文检索的时候啊,我只是拿前50个啊,你有可能是比如说100个长度,我只考虑前50个来这个字段来构建我们这样的一个缩音啊,那你要说呃有两个这个呃两行数据呢,它这个音份呢不一样,但是它的前60个字数都一样。啊,那我这要用前50的话呢,那就意味着他俩呢,相当于就是一样的了是吧,哎,那一样就一样呗,那就先后这样去排是吧就可以了。行,这样的话呢,就避免我们这个索引的话呢,它可能这个一条这个索引的这个就比较大啊,你这样的话呢,我们要是取50的话呢,一个页当中咱们就可以放是比较多的这个,呃,这个数据了就是吧。
30:05
行来我们选中啊,这个我们做一个执行。嗯,这就可以了,接着呢,我们去show一下啊,Index from一下。这个TEST4啊。好,这呢,这不就罗列出来了,我们是这样的一个啊,这是我们起的这个名字,它是一个forest。啊,这个for test在这块写着的是吧,还forest行这个呢,就是我们创建一个叫全文的一个检索啊全文检索。然后这儿呢,我还举了其他的例子啊,比如这是这个具体的文章,这个文章的话呢,我们有这个title,有这个body啊,这个就是文章的题目,这是文章的正文,然后呢,我们针对于呃这两个合在一起,构建了一个叫呃全文的一个检索啊,通过名字啊,通过这个正文啊,一些关键词,我们去做这个检索,效率呢会更高一些,这呢是论文啊,针对论文的话呢,呃这呢有这个叫title啊,Title就是论文的题目啊,论文的这个具体的呃,这个评论啊,摘要啊,这样的情况啊,我们构建一个权威检索啊也是可以的。
31:07
好,那这块呢,再简单说一下,我们构建完以后的话呢,咱们在检索的时候的话呢,咱们就不使用之前的这种like方式了啊,模糊查询我们怎么做呢?是使用这个叫match啊,然后呢,把我们这个对应的title和这个content我们放在这里边,然后against呢,下边呢,就是你要查询的这个字符串。啊,要检索的这样的一个关键词,哎,这种方式呢,检索比我们这个like这种方式呢,性能呢要快N倍啊要快N倍啊说可能存在精度问题,就我们这呢叫模糊查询,但是呢,它查询出来这个结果呢,还是比较准确的啊有几个就是几个是吧,诶我们这呢是相对来说叫他来讲就更模糊一些啊可能不那么精准了,但是速度呢是比较快的。啊,大家呢,在百度搜索也是一样速度很快,但有可能呢,并不是把所有的满足你这个条件呢都列出来了。啊,这个呢,其实它有一个频率的问题了啊,啊频率高的话呢,肯定是优先检测到的,对吧?然后再一个的话呢,关于我们这个前面检索呢,你要搞清楚,有的版本呢,它可能不支持你比如说我们这5.5的版本当中,只有这个MY支持度DB呢,就不支持了,是吧?OK。
32:09
然后下边呢又提到说如果呢,你要是全文检索大量数据,建议呢先填数据后填索引啊,因为呢,你不断的去加数据的时候呢,我们索引呢也要跟着变啊,这个呢反而导致我们添加数据呢比较慢啊,你把数据都加完以后呢,再加索引,这个呢要更好一些啊,下边呢还提到去创建这个空间的索引,这个咱们就看一下就行,这个空间索引的话呢,要求就是你这个空间这个类型。啊,我们说呢,空间索引只能作用在空间那几个类型上,比如针对它要求呢,得是非空的啊,哎,有这样一个限制,然后呢,你去创建一个索引,起个名,针对是这个字段,呃,前面呢,加一个叫special空间的意思表示的,我们这呢就是一个空间索引了。那你再通过这个空间索引的这个字段呢,通过这个字段呢,去检索啊,这个性能就会提升好,那这样呢,咱们就诶在这个创建表的时候呢,如何呢,去创建这些索引呢,咱们就讲清楚了。
33:01
好,那下边的话呢,我们来看一看这个表啊,我现在都已经创建好了啊,那我们能不能给已经创建的表去添加索引啊,可以的是吧,那就是我们下边呢,就是讲的这个叫table,诶或者呢,是用这个叫create index,然后on啊,具体我们这个表这样的方式去做来我们这块呢,就先来看第一种叫table的方式来回过来啊嗯,咱们这块呢,再新建一个井号。来往上看一下,这个呢,我们叫第一种是吧,下面我们说这个第二种。哎,第二种啊,这个呢,我们对应的是啊表呢已经创建成功啊。啊已经哎创建哎成功了啊行,那比如说我们这块呢,还拿这个book呢,来给大家去举例子啊,这块我们CTRLCL一下,哎,我们首先呢,来一个表,这个我们叫BOOK5,哎首先呢,这里边比如说任何的索引呢都没有。把这个逗号去掉,把这个表呢,我们创建成功。行,这个表呢已经有了,此时呢,我们去一下这个index from啊,不可无。
34:05
啥也没有。来走起,那接下来的话呢,我们给这个表呢,去添加这个索引,对吧,哎,就是这个意思了,那首先呢,我们说第一种方式啊,第一种方诶哎这个第一种方式咱们通过呢,叫做al,哎table哎谁谁谁,然后呢叫ADD啊我们去加这个具体的索引就可以了,那具体我们来做一下,比如说我们这个al table,咱们叫五是吧,然后艾一下,哎这呢,我们就是一个普通的index,那你就就写个就写个index就行,比如针对呢,我们这个叫啊index,咱们呢叫comment吧,啊cmt这样是吧,然后呢,诶把这个comment呢写过来,诶这样就行了。这呢,我们选中啊,走起。嗯,成功了,然后我们再去受一下啊,这就有了,我都不用去讲了,咱们前面也都说过了,对吧,这个呢,添加的是一个普通的一个索引,然后呢,接着al table,比如说个BOOK5,我们去艾特一个叫啊这个index,这个unique的index,然后呢,针对的比如我们叫book name吧。
35:06
不过name啊,你可以直接这样简略的给他写一下。然后针对的是我们这个字段,哎这么着,然后选中,哎这样来我们选中。啊,执行。然后再去做一个受,哎这块你看就有了是吧,嗯,这个吧,然后这是个零啊OK的,就这里边的话呢,先有谁后有谁,其实这个顺序呢,是无所谓的,对吧,好这个呢,我们创建的叫唯一性的一个索引,咱们在创建一个比如叫联合的吧,啊al table啊book无。ADD啊,这个index啊,起个具体的名字啊吧,然后呢,这是一个,哎,咱们针对的叫book ID,还有这个呢,叫book name。再加上一个啊这样啊,Book ID,哎,Book name这个咱们刚才那块也提到了,这里边呢,写的时候呢,它是一定有先后顺序的要求的,大家呢,一定要把你常用的那个字段啊,常作为检索条件出现的字段呢,是不是放到前面啊,因为我们要遵循这个最左前缀的这个原则。
36:06
好,来,我们走起。然后呢,我们再去做一个受。啊可以了,然后这时候呢,列举出来的这里边呢,就是同样这个名字,他仨呢是不能够交换顺序的,那123必须呢,跟我们这里边的声明的行后顺序是匹配的行,我就以这个例子为例呢,给大家去说明叫alter table啊这样的方式呢,去做的添加,好那么还有一种方式呢,去添加啊这个我们来一个二。二啊,嗯,这种方式添加的话呢,我们称为呢,叫做呃叫create index。啊,相当于我们去创建一个index,然后呢,把它添加到啊,具体哪个表上的哪个字段里边,哎,就是这样的一种方式啊也是OK的。嗯,这个啊,这个咱们这样吧,把这个CTRLX一下咱们。放到这个里边,哎,放到这里边啊,咱们去体会,然后呢,咱们再造一个表啊,这个表里边呢,没有任何的这个,哎,这个索引呢,就哎这个造一个表六啊选中跑起来。
37:06
然后呢,我们这时候呢,也是查看一下。啊,是这个六。哎,这时候啥也没有对吧?哎,那下边呢,我们来看下,这叫create index on的这种方式啊,那比如我们把上边这几个呢,给大家翻译一下,针对这个我们common去加上一个,那我们就可以这样啊,咱们去create一个。啊index,然后起个名字,这个名字呢,是不是就可以叫它呀?啊CTRLC一下啊这么着是吧,然后on咱们BOOK6啊这个表中的字段呢,就是它。哎,就是完全的这两种方式呢,你可以互相的转换的。行选中以后呢,我们去做一个执行。收一下。还没问题是吧?好,接着我们再去翻译,去create。这个index啊,把我们的第二个啊,这个呢,Index是我们的唯一性的啊加一个。哎,这么着,嗯,然后呢,起个名啊,就他。
38:01
然后呢,啊,还是我们这个BOOK6的这本书上的,哎,这个字段。哎,这样,哎,我们再把它选中呢,执行。啊,然后再去收一下。啊,就有了是吧,啊,这上就我们这个事儿啊,行,然后接着第三个啊,Create一个啊这个呢,就是普通的了啊,我们叫index。然后呢,把这个名呢拿过来,哎,针对的是我,哎啊是吧,我们这个BOOK6这里边的三个字段。哎,就这么高啊,CTRLC。诶拿过来好,然后呢,把它选中了再走走起来,然后再去我们做一个售啊没有问题是吧?好的,这呢就是我们讲的在表已经创建了的这个情况下呢,我们如何呢去添加这个索引啊,两种方式呢,大家掌握一个就行啊,因为呢,你看俩是会可以这个互相转换的啊。
我来说两句