00:00
行,那么关于如何去创建索引啊,咱们就说到这儿了啊,两种大的方向啊,创建表的时候和已经表创建好以后啊,如何呢去创建这个索引,呃,下边的话呢,咱们再讲一下这个索引的这个删除,在有些时候呢,我们还是需要呢使使用这个索引的删除的,你比如说呢,我们这个表中的话呢,诶提供了好多的这个索引,针对一些具体的字段了,那接下来的话呢,如果我们要马上呢进行大量数据的一个这个增删改了,那这个时候呢,建议大家你可以考虑呢,把其中的一些索引呢先删掉,然后呢,等你大量的这个操作完成以后呢,我们再把这个字段上的这个索引呢,再加上,呃,这样的话呢,就不影响我们大量的这个增删改的时候呢,这个呃,添加的这个性能了。啊,就相当于我们在有些场景下呢,确实要做这个索引的一个删除啊,我们这块呢,就来看一下啊零二啊关于索引的删除。来删除操作啊,稍微放大一点。诶CTRLCCTRLS啊,CTRLV啊,我们保存一下行,那么所以呢,该如何去删除呢?诶那这块呢,其实就对应着我们创建表以后咱们去再添加索引的两种方式,你看这个呢,我们叫create,呃叫al table,然后叫ADD,这个是咱们添加索引的一种方式,另外呢,还可以呢去create index啊是不是这样的两种方式呢?是以后咱们添加索引的是吧?那么对应的删除的话呢,诶我们这叫table,呃,你上面呢叫我这呢叫drop是index,我这drop index啊很好理解,然后呢,你上面呢叫create index,我这块呢index,诶跟我们上面添加的这两个呢,那正好呢是这个一一对应的对吧?行,那这块呢,我们就来看一下如何呢去删除这个索引了啊咱们现在呢,不是有一些这个表嘛,那比如我们这个啊,CTRLC一下啊,拿过来啊CTRLV。
01:46
咱们先看这个五吧,啊,先拿这个来说啊,这个执行在这里边儿呢,我们看到有一些具体的索引是吧,那如果我们现在想删除啊,这个呢,我们就来说明啊方式一是吧。方式一的话呢,刚才看到了通过我们叫al table的方式,然后呢,是不是去叫drop呀,哎,Drop你具体的index,然后起个名啊就行了,然后al table这个,比如我们叫BOOK5是吧,哎,Drop index这个呢,你也可以写成两行啊,可读性好一点,起名啊选这个不是起名了,是这个找你指定这个名,那比如说这个叫啊index,然后cmt。
02:22
那通过这样的方式呢,我们就把它呢,就干掉了哈,周琦。哎,我们这边呢,再去收一下。哎,你看这时候是不是就少一个了啊,没有问题是吧?好,那这里边的话呢,我们有一个这个,我就演示这一个就行啊,啊有一个提示呢,要说一下添加这个auto inrement约束这个字段,这个唯一性的这个所引呢,不能被删啊,这个应该能理解,你像我那会儿呢,演示那个主键,呃,所以的时候呢,咱们一开始那个主键上呢,是不是我加了一个auto increment了,咱们去删主键呢,是不是也不让咱删呀。啊,跟这个是一样的道理,如果说我们这有一个唯一索引的话呢,我们说唯一索引呢,他俩是不是互相成全有唯一索引,是不是自动的就会有一个唯一性约束啊。
03:01
对吧,那会儿咱们不是也演示了吗?那你要是把这个唯一索引干掉了,是不是唯一约束就干掉了,那咱们这个automent呢,它的存在呢,必须呢,诶作用的这个字段呢,要么有一个唯一约束,要么呢有一个主见约束,那现在主见的不是,那你要把唯一约束给干掉,它不就是没有生存的这个。空间了嘛,没有所依赖的这个呃条件了,所以说我们这个autoc呢,你不能呃把它生命在这个唯一索引上的这个呃索引删掉,你要删除的话呢,不就报错了啊OK,行,这个呢,是我们要格外的说一下的,嗯,这就完事了,然后接着我们再说一下这个方式二。方式二的话呢,哎对应着我们上边呢,是不是叫create index,那我们这个呢,就叫做drop这个index啊drop index,然后呢,哎啊句体的一个表,哎这样来,比如说我们drop这个index,咱们就拿这个开刀吧,啊这个呢叫叫他是吧啊UK啊然后呢这个index。啊,然后呢,Be name行这块你看我要故意写错了,你看这时候他会不会报错啊,走起。
04:03
啊报错了,那相当于我们就没有这样的一个,哎索引是吧,哎把这个名呢,重新改一下。啊,这样来选中啊执行。嗯,还写错了吗?嗯,Job啊,这里边我们这个index的话呢,它是一个是不是有的index。还需要我们考虑到这个点吗?来我们这块呢,再去受一下。啊,这个激动了是吧,咱这也没写on呀,光这这写了,这这没写是吧,哎,Job index他然后呢,啊啊指明你具体的是我们这个book补是吧,哎这个晕了啊呃,还是那个意思,咱们这块呢,先写错了是吧?哎,我们选中。啊,执行啊,这块呢,说你要删除的,它不能够去删啊,你检查一下你这块呢,写的是不是有问题啊,说白了就是这个呢,你必须把这个名写对了啊,然后我们再去做一个drop啊这就可以了,嗯,这块收一下。哎,那就没有了是吧,哎,这个呢,比较简单一点,呃,接下来的话呢,咱们给大家说一下谁啊,你看我这里边呢,是不是有一个联合索引,诶这个联合索引呢,基于它我们会创建一个是不是B加树啊先呢是按照这个ID后按照内幕,再按照in呢,是不是有一个这个具体的创建的这样一个过程是吧?呃,这个呢,刚才也说到了啊,先按照它排序,然后再按它,再按它,现在呢,你注意我把中间这个呢,比如说我想把中间的这个,诶就我们想删的话呢,索引,我整个把这个索引就删掉了,这这不用多说了啊,那这几个就都没了是吧?我现在想删谁呀,我想删这个表中的这个字段。
05:34
诶,你看有点意思啊,我们想删字段咋删来着,还记得吧,Out table,我叫book是吧,然后咱们叫drop,一个column,我想删谁呢?我想删这个叫book name这个字段。你想我要删除这个字段的话呢,咱们这个联合索引会怎么处理啊。啊,首先你看我们执行。真删了是吧,真删以后的话呢,大家你看一下我们这个受index啊执行大家你会发现呢,我们这个index是不是有点变化了,原来呢是基于三个字段的,现在是不是就变成两个字段了。
06:07
相当于我们这个索引呢,其实进行了一个重置对吧,呃,因为你中间少一个字段了嘛,哎,这样的一个情况啊,他要做这个索引要做修改的。啊,能理解是吧,好,那么在这个基础之上呢,我们CTRLC我再去删谁呢,我删这个叫book ID吧。那我删这个ID,那把它这个ID删了,相当于我们这个,所以目前呢,首先是不是按照不开ID呢来构建的,相同的情况下呢,ID值我们再考虑in了,现在你把这个最开头的这个最左侧的这个呃列呢给它干掉了。那么这个时候呢,会是什么场景呢?我们再去做一个show。啊,现在的话呢,我们这个音符呢,是不是就充当了最开头的这个了,现在其实也谈不上说一个联合了,是不是就成了个单列的一个索引了。啊,没有问题是吧,那那再问大家一下,如果我们这时候呢,再去删。哎,我把这个音呢也干掉。
07:01
好选中,那我们这块呢,执行一下啊,你把这个也干掉了,是不是目前呢,我们彻底的这个索引呢,就没有了呀。哎,不是索引,我们这个啊,是索引啊,哎索引呢就没有了啊,这个呢,大家去体会一下。那主要呢,我们想给大家演示的就是我们删除这个联合索引中的这个字段的时候呢,这个索引呢,它是如何变化的啊,我们来做个测试啊,这个删除啊,联合啊,索引中的这个相关字段啊,索引的这个变化啊,这个呢大家关注一下,对应的呢,我这也有相应的一段文字说删除表中的列的时候,如果要删除的列呢,为索引的组成部分,该列呢也会从索引中删除啊,刚才不演示了吗?如果组成索引的所有的列呢,都被删除了,整个索引呢也就被删除掉了。啊,就是这么一回事,行,那这样的话呢,咱们就把这个删除索引的这个操作呢,就说清楚了啊,比较简单啊,大家呢,掌握其中一种其实就行。好,那么代码层面呢,如何去创建索引,包括呢,删除索引,咱们就说到这儿了,然后接下来的话呢,我们看一下这一章的第二个部分内容,叫MYSQL8.0的关于索引的新特性啊,这边咱们讲俩新特性啊,一个呢叫支持降序索引啊,一个呢叫隐藏索引啊,其实这个意思的话呢,就是跟这个名字呢,基本上大家一看呢,也能知道它是什么意思啊,具体细节是怎么着呢,来咱们看一下。
08:22
首先呢,这块提到说叫支持这个降序索引啊,这个咱们得在这个8.0里边去演示了,对吧?呃,降序索引呢,我们说从这个MYQ呃四开始就已经说支持这个降序索引的语法了,诶但是事实上呢,咱们这个DEC呢,它的定义呢是被忽略的,直到咱们这个8.0开始以后,才真正意义上的支持我们这个降息索引啊,注意这时候呢,还仅限于我们这个in DB的存储引擎。啊,这块咱们演示的话呢,就在这个DB里边呢,给大家演示就行了。那么这个降雨所引呢,诶跟我们这个起作用和不起作用区别是什么呢?诶大家看如果呢,是8.0之前那个版本,我们创建的这个仍然呢,相当于你这个降序不是忽略了嘛,相当于你就还是个升序的这个缩引,那就意味着如果我们要是反向扫描的话啊,你比如说我们呃这个按照这个字段A啊明明呢,你加了这个de,相当于呢,这就是一个降序了,对吧,在他这个上面呢,我们创建了一个缩引啊8.0之前呢,就还按照升序呢去给你排的,那如果说我们现在就想按照这个A字段降序去排列,这时候呢,它就相当于是呃这个要进行这个反向扫描的话呢,它这个效率呢是比较低的。
09:29
啊,而我们在8.0的时候呢,直接就相当于是可以从大到小这样的方式呢,去进行排列了,那就相当于还是正向的一个扫描效率就比较高一些是吧?哎,就是这个意思行,那这块呢,我们就分别呢,可以在5.7跟8.0呢去演示一下啊,让大家能看到呢,确实是不一样的。啊,那不妨呢,咱们这块呢,就还使用这个来4Q要吧,来这块呢,我们就打开这个新的这个编译器,这个呢是8.0的,这个呢是我们5.7的,没问题是吧?好那么在这个8.0当中啊,CTRLV咱们选中,比如说这个DBT2我呢去创建一个表啊A字段B字段这个index这个咱们都说过了,然后呢,这起了个名,然后呢A逗号,注意啊,这个A的话呢,我这样写相当于它是不是就是一个升序排列的呀?啊B字段呢,就是de就是降序排列的,没问题是吧?好,那这块我们选中呢,做一个执行。
10:18
啊,这就成功了啊,这个呢,我们是在这个8.0里边执行的,然后的话呢,我们可以呢,去这样啊叫受啊create。啊table啊,咱们叫T1OK,那我们选中呢,大家执行一下。啊,这个呢,稍微有点长啊,那基本上我们要看的信息呢,也比较清楚,但是你看我们这时候授的时候呢,在这个位置明确的能够看到呢,我们这个哎,所以的名还有呢,A字段啊后边呢,没有A呢,表示它就是一个升序的,然后这个B字段的话呢,是不是有个降序的呀,那意味着我们创建这个,所以呢,它就支持这个叫降序排列,也就是说呢,我们先按照这个AS呢去这个构建我们这个B加数对吧。诶构建这个不加数,然后呢,如果出现这个A段这个值相同的情况下,你比如说这个呢,A是这个咱们是in的类型的,比如说是一,这个A呢还是一,这个后边这A呢还是一,然后接下来我们在考虑这个B的时候呢,我们就按照B的这个降起来了,那可能就是B呢是321是这样的一个情况,就是我们通过这样的方式呢,来构建这个B加数,那同样的我们把这个操作呢,CTRLC一下,咱们放到这个5.7当中。
11:23
啊,5.7当中咱们,诶这块还有一个DBT,咱就还在这吧,好大家注意看,我们把这个呢选中呢做一个执行。哎,创建好了,然后呢,咱们再去创建啊,再去授一下,当然你注意这里边这个细节,你看这。我们此时这块你看呈现出来的A和B是不是B后边就没有那个D了,那沿IG呢,就是我们此时构建那个B加数呢,诶那就是还是刚才那个场景啊说呢A呢,哎,这里边有三个啊都是一,在A都是一的时候呢,B呢,你发现呢,它仍然是一个升序的啊,B加上这个值呢,就是123还是这样排的,那如果说我们有个需求呢,呃,需要呢,就是按照这个B呢降序去排的话呢,这个时候呢,它得进行了一种反向扫描,这个呢,它的性能呢就比较差一些。
12:05
诶就是这样的一个道理,呃后边这块呢,我也写了一个这个存储过程,咱们往这个呃,表里边儿呢,咱们添加了这个,诶800条这个记录。800条的这个记录是吧,然后这块呢,咱们也可以把这个选中呢,CTRLC一下来回过来,咱们在这个呃,8.0当中啊,先做这样的一个操作,那只需要呢这块选中,然后执行这个过程呢,比较简单,里边就用了一个外部循环,然后通过这个呢,我们进行一个调用。啊,选择执行。啊这块呢,他得稍微执行一下啊可以了,然后同样呢,我们在这个5.7里边啊,咱们也跑一下。啊,选中呢,执行。啊,这样呢,我们再去做一个call啊调用。啊,可以了,行,那我们这时候呢,可以去,诶select星,哎,From一下我们这个TS一看一下这个表,哎,Count星。看一下我们这个表中的这个记录数对吧。好,选中啊,走起。啊,799上啊,我这个呢是用的这个没有写等号啊,799条记录好CTRLC一下,我们在这个8.0里边呢,也看一下。
13:05
啊选中哎做个执行行这呢都没有问题,对吧,然后的话呢,我们诶来执行这样的一个explain啊,你看这个时候呢,我们order的时候呢,我是不是就考虑按照A先是升序,B呢,是不是再去降序这样的操作呀,哎,我呢只显示其中的五条,记录好我们CTRLC一下。那么咱们先在这个5.7里边去看啊,那由于呢,你看我们生成的这个。啊,甚至呢,我们这样的一个索引,其实呢,根本就没有考虑B这个降息的一个事儿,所以呢,我们这时候呢,在这样去做plan的时候呢,大家你会发现啊,这个里边呢,首先呢,你看他检索了799条这个记录,然后呢,诶,它这里边使用了一个叫file sal,我们叫文件排序。啊,后边的话呢,咱们会讲这个专门说这个工具的时候呢,就会提到这个呢,Using fair的话呢,只要出现它通常这个效率呢都是比较低的,那就建议呢,我们再换一种方式呢,去做一个优化啊,就进行这个SQ的优化了,好那么这呢,相当于是我们一个优化测试啊,那么同样的这个呢,我们放到这个呃,8.0当中,咱们再去做这个查看,诶我们呢,同样的去选中做一个执行,好大家看此时的话呢,我们这个检索的你看是不是只有五行了,而且呢,这时候呢,就只是使用了我们这个index,没有那个using file了。
14:20
那就说明我们这个8.0呢,在这种场景下的执行呢,效果是非趁好的。啊,这个呢,就是我们说这个支持这个降息索引它的一个好处啊,优化的一个测试。啊,这个呢,很明显的,大家能看到这个点了是吧?啊这儿呢,相相当于我们这个新特性呢,对于我们优化呢,是有帮助的,但是这里边儿有个细节大家需要注意一下,我们这里边创建的这个索引呢,是A升序B降序,那如果说呢,你在呃这个plan呢,诶去分析我们这个查询语句的时候呢,你把这个位置呢,也加了一个DA,大家觉得这个效果怎么样呢?哎,来我们走一下,你看是不是就比较糟糕了呀,这个时候呢,跟我们刚才在5.7中的一样了啊,这也呢,也是799了啊,这个位置呢,你看也是U行fair了,哎,因为呢,咱们只能够完全匹配你索引的这种场景,一个升序一个降序,你要这块也降雪了,那完了。
15:11
那又用不上我们这个缩引的这种情况又得反向去扫描了是吧?哎这个呢,就哎这个不太好是吧?哎这个呢,就是不推荐你要是呃经常容易这样的去排序的话呢,那你建议你是不是再创建一个索引,使用我们这个A降序B降序的方式啊。啊,就OK了啊。行,这个呢,就是咱们想给大家强调的这个关于这个呃,降序索引的事儿啊,属于一个小特性啊,就过了,接下来的话呢,我们看一下第二个特性叫做隐藏索引。诶顾名思义啊,咱们创建一个呃表以后啊,给这个表呢,去添加相关的索引,然后呢,默认情况下呢,这个索引呢,它都是这个叫visible的,就是可见的状态,那我们也可以呢,把这个表中这个字段呢,给它设置成这种呃隐藏的一种状态,那一旦设置成隐藏以后的话呢,那有什么好处呢?仅仅是为了看不见吗?那肯定不是的,对吧,那这呢,就涉及到我们这个隐藏索引,它的一个作用是什么?
16:04
但是你看啊,我们在5.7,包括5.7之前那个版本当中,有的时候呢,我们会涉及到去删除索引啊,当然呢,我们删除索引以后呢,有可能会发现呢,我们再去操作化呢,就导致出错了啊,这个呢,咱们得赶紧的把这个索引呢再创建回来。那如果我们这个表中的数据量比较大的时候呢,诶你想想这时候我们先删了,后来又添加这个呢,就会消耗过多的系统资源啊,导致我们这个操作的成本呢,是很高的啊,就不太推荐我们这样比较冒失的去操作了。啊,当然前提呢,你5.7之前你也没得选是吧,你还只能这样去做啊,那8.0呢,我们可以有另外一种方式的,叫做隐藏索引,怎么办呢?咱们可以呢,先把你想删除的这个索引啊,先隐藏掉。那那你隐藏掉以后呢,相当于呢,就是它就不起作用了,就这个道理,那它不起作用了的话呢,那那你这块呢,你再看看做相关一些操作呢,会不会报错啊,如果没报错的话呢,那就说明删除它没有问题,那这时候呢,你再把它呢,给它删掉啊,这时候呢,就比较稳妥一些是吧?那我们把这种啊先索引隐藏,然后再考虑删除的方式呢,就称为呢叫软删除。
17:08
啊,相当于有点像我们叫软着陆一样啊,说一个国家,比如说房地产啊,什么有泡沫啊,我们叫硬着陆还是软着陆,这个就相当于是一个软着陆啊,先试探一下啊,OK,可以删,然后我们再给它删掉,行,这就我们说的这个点。然后另外的话呢,我们这个隐藏索引还有一个什么作用呢?咱们可以呢,通过把这个索引呢,给它隐藏以后,咱们查看一下呢,呃,隐藏之后呢,我们explain一下一个查询的性能,看看前后有没有区别啊,如果前后没有区别,那说你这个索引呢,就没有用。对吧,哎,那你要是前后有区别的话呢,那说明我们这个隐藏索引它就有用,所以通过隐藏索引的方式呢,我们可以去检查,呃,相关的这个查询的一个性能啊,这呢也是它的一个好处啊,一个好处。呃,这儿呢,我写了一个注意点啊,说这个主键呢,不能够设置为隐藏索引啊,因为你要主键设置隐藏索引,相当于它暂且呢就失效了,那主键呢,咱们说在一个表里边可不能随随便便就失效了,你要一失效的话呢,它就一定会去选一个另外的啊,唯一的飞空所引呢,就当成这种隐示的主见了。
18:11
啊,你要这个主件呢,你还想给他设成隐藏,那那坏事了,那就成了用我们这个呃,隐藏的那个肉ID了是吧?哎,就不推荐了哈,这个小细节大家注意一下。好,那下边的话呢,就是我们在创建表啊,或者create index,然后on呀,或者out这个table,然后在ADD这个具体的索引的方式啊,哎,在这种场景下,咱们前面不都讲过创建表的创建表,还有这个呃,已经有了表以后呢,再去添加这个索引的时候呢,怎么去设置索引了,诶那么你在呃设置的时候,创建的时候,我们去加上这个,诶,Visible或者叫invisible,诶默认的情况下呢,咱们没有写了,那就是visible的状态。行,那这块咱们就诶接着说一下吧,啊,接着这块说的话呢,我们呃这个就写到呃这个里边吧,咱们把这个呢,也建一个文件啊零杠三啊,这个是零三杠啊。
19:01
这个呢,我们是哎MYSQL,哎8.0啊新特性。对吧,然后呢,这是我们的第一个新特性,我们说的呢,叫做呃,支持降序索引。嗯,OK,然后接下来我们说这个第二个。那第二个新特性,我们说呢,叫呃隐藏索引啊这样呃先把这个文件呢保存一下。啊,CTRLCCTRLSCTRLV一下。啊,可以了啊好,那这时候呢,我们就直接呢来说了啊,比如说我们这个创建表的时候。哎,创建表时,哎,我们再去隐藏。哎,这个,哎所以是吧,哎不妨呢,咱们就还拿之前咱们拿这个创建这个表,这个book,这时候来说啊,来这个BOOKL6吧,哎把它呢,CTRLC一下啊拿过来。啊,这个呢,我们就改成叫七。哎,保存一下啊吧,嗯,这里边12345啊在这是吧六,然后在后边这块呢,我们去创建一个索引啊,让这个索引呢,它是不可见的。
20:04
啊,创建。啊不可,哎见的这个诶索引啊好,那这个ind的话呢,就是其实跟原来这个整体格式啊,基本上都一样的啊,比如这index我们就还写个IDX,咱们针对的是这个comment,然后这就写这个comment了。哎,就这么着是吧,这个呢,后边呢,其实啥也没写呢,其实就相当于呢,它是一个叫visible的状态。啊,Visible看这个写错了没啊,就这样啊,然后呢,你要是现在让它不可见的话呢,你就加一个叫invisible啊就可以了,行,那这时候我们把它呢选中啊做一个执行。啊,成功了,然后呢,我们再接着呢去做受啊index from一下叫BOOK7对吧。来我们选中啊执行。呃,这时候大家你看到我们查询的时候呢,是不是出来了,但是呢,这个位置呢,你看它写的叫visible呢,是一个no啊,相当于此时呢,我们就是不可见的。啊,就不可见的,那不可见的话呢,呃,使得会有什么样的一个情况呢,比如说我们这块看写这个plan啊。
21:04
Explain,比如说我这块呢,诶叫select啊,行,诶from一下我们这个,诶BOOK7,然后呢,这个where啊,我这块呢叫a comment。哎,等于啊,我这块呢,就写一个具体的指导啊,哎,我就哎随便写一个具具体的信息啊,就这么着。哎,这块我们再去走一下,哎此时的话呢,哎,我们说由于你是不可见的,咱们就不能够应用这样的一个哎索引了,哎所以你看大家这块呢,就是一个闹的状态是吧。哎,这呢,就我们说的这个不可卷它的一个呃情况啊,就是呃,你要发现呢,我们隐藏它以后呢,这个时候呢,没有用上索引,呃,那就说明它原来的如如果原来能用,现在用不上了,那说明它就是有作用对吧,哎就这样个道理,这呢咱们想说的是这个叫哎创建,哎创建表识是吧。哎,这个上面写着了啊,这个是我们的第一种情况。然后第二种情况。
22:00
第二种情况啊,这个呢,我们可以呢,在已经创建表以后啊。来创建啊表啊以后啊进行这个操作,这呢,诶跟我们上面一样啊,对应呢,这里边也有两种方式,第一个呢,叫al table,比如我们叫这个A。七啊,然后呢,我们这呢,可以去ADD的一个,嗯,针对比如这个book name吧,嗯,I的一个,嗯,你也可以呢,写成叫unique是吧,Index。啊,In unique index呢叫book name啊,针对这个叫book name,然后呢,Invisible。对吧,哎,这样个情况好,那此时呢,我们把它呢,选中咱们做个执行。然后呢,再去收一下。啊,此时的话呢,你看我们这个,所以它后边呢,是不是也是一个no的状态啊,相当于它这时候也是一个不可见的啊,这是一种场景,还可以呢,我们是不是create。啊,这个index啊,起个名字啊,这个咱们针对一下,比如说这个字段吧,啊index。啊,这个是一个页啊,Pub啊,我就这样简写了,作用在我们这样的一个字段上。
23:04
啊啊,这应该这样写啊,它然后呢,On是吧。我们这个叫a book。七哎,这么着。嗯,好,然后呢,这时候我们选中啊执行。可以了。再去做一个受。诶,你看这是我们又多了一个是不是针对我们这个字段了,诶后边的也是,诶这个呢是哦,这个位置你看我没有写这个,忘了写这个invisible了哈,没有写这个invisible的话呢,你看它这就是这个yes了啊,那正好我们就拿这个说一下啊,这个是个yes的情况下呢,我们要是啊拿它呢,进行一个查找的时候呢,它就会应用上我们这个索引,你看我们把它呢CTRLC一下啊,我就这么着拿过来,咱们比如说写成叫2022年是吧?来你看此时呢,我们去explain的时候,诶大家你会发现呢,它是不是会应用上这个索引啊。啊就是这样区别好这个呢,我们给他,诶我忘了加这个invisible了啊这个我们从啊就忘加,就就这样吧,然后呢,下边呢,咱们就接着呢去讲这个修改呗,那我就把它改成是一个invisible不就完了吗?好,那下边呢,我们来谈谈这个啊修改这个我们叫哎索引的这个可见性。
24:12
好,那暂时的话呢,我们看到这个,所以的话呢,它相当于是一个可见的啊,那我现在把它改成不可见的啊就完事了,对吧?呃,怎么做呢,这个呢,用的就叫alter。哎,Al al谁啊,Al table啊,这个BOOK7是吧?嗯,这个BOOK7我想改的呢,是这个索引,那怎么写呢?哎,这个呢,用的叫al index。啊,你想把它呢,改成是一个叫invisible的状态,那我们就叫哎in啊vis哎哎这样就可以了,好你看这时候我们就做一个修改,对吧?哎,我们执行一下。那么执行完以后的话呢,我再去做这个受操作啊执行当然你会发现呢,此时它这块不就是一个no了吗?他在是一个no的情况下呢,你看我们再去做这个plan啊大家走起,你看这时候呢,是不是就没有应用我们这个索引了,诶通过这个呢,我们做对比啊,能够看到呢,就是它是否呢是起作用,当然呢,光从这看还不行,我们还可以呢,往这个表中去真实的添加一些数据,你做一个查询,你看一看这个执行前后啊,你这个设置成可见啊不可见啊前后这个呃,执行的时间你看是不是有明显的差别啊,这样的话呢,更直接一些啊去证明对吧?好,这个呢是修改可见性,你也可以呢,把我们刚才呃像这些字段呢,哎,它是不可见的,我们把它改成可见也行啊,改一个啊,诶al table。
25:36
啊,不可欺。Al,这个index啊,名字呢是叫他。哎,把它呢改成是一个visible。哎,这样就可以了,嗯,哎,我改这个吧,呃,因为咱们上面不是explain的时候呢,拿它写了啊,嗯,改它的话呢,我们就是用这个名。哎,这样就行来选中呢,我们做一个执行。然后呢,咱们再去做一个受。
26:01
啊好,这时候的话呢,我们看到这个位置呢,它是不是就呃visible啊,它呢,就变成了是一个yes了。对吧,诶,它变成yes了,它变成yes以后呢,我们再去呃,用这个plan啊,走起啊,你看这时候呢,因为它是一个可见的状态了,我们就可以使用它这个索引了啊,你看这里也能看得到啊行,这个呢,就是修改这个可见性啊,此时呢,它是由这个呃可见啊。哎,我写一下这个注释信息。啊,由这个可见的状态,咱们把它呢,改成了这个不可见的状态,下边呢正好相反。嗯,把它改成了一个,那也可见的。嗯,行,这个呢,就是我们说,呃,修改这个索引的一个可见性啊这样一个点,嗯,好了,那这个事儿呢,我们就说完它了,然后呢,大家你看我这里边儿有一句话啊,这个大家还真是要注意一下说呀,当索引被隐藏的时候,它的内容啊,仍然和正常索引一样呢,是可以实时更新的。
27:06
诶这个事儿呢,大家一定要小心一点,那就意味着呢,如果我们有一个,所以呢,你长期去隐藏的话呢,你本身呢,相当于它还不起作用,但是呢,你每次去更新表数据的时候呢,它还得跟着去更新,那这呢是不是感觉就非常的。呃,浪费我们这个性能啊是吧?哎,那你这时候呢,最好呢,是不是把它给删掉啊啊你要需要的话呢,你后期呢,你再把它加上对吧?哎,你现在呢,哎,我们说用索引的目的呢,就是为了提升效率,你现在把它隐藏了啊,但是呢,我们更新的时候呢,更新数据的时候,它还跟着更新,这是最糟糕的这样个情况了,是吧?哎这个大家要注意一下。好,这呢我们就呃说到这儿啊,关于这个状态切换的下边这个呢,说叫使隐藏索引呢,最优化器可见啊这呢也是一个小点,大家呢把这个点呢,可以当成是一个了解性的内容就可以了。呃,了解性的那种。啊,这个呢,就涉及到我们的优化器呢,是不是能够呃使用我们这个隐藏索引了啊呃,做一个了解,默认情况下呢,我们这个优化器呢,对隐藏索引呢,它都是不可见的。
28:06
啊,都是不可见的啊,你像咱们刚才呢去时候呢,本身就不可见对吧?诶这里边呢,会涉及到有这样的一个操作啊,诶大家看诶我通过这个select这样的一个方式啊,CTRLC,嗯,这个咱们在这展示呢,好像就不太方便了是吧?诶我把指令列到这儿啊,咱们呢,诶可以在咱这个命令行这块呢去展示比较好一些,呃,咱们讲8.0的新特性,所以呢,回到这个150这个位置啊,然后我们粘过来。啊,回车啊,这个呢,我们查看一下我们叫优化器它的这样的一些配置的信息,这些配置信息里边啊,你看有一个叫use invisible,然后index说是否能够使用我们这个不可见的这个索引呢,这个是一个off的,相当于我们优化器呢,是不会考虑你这个隐藏索引的,对吧?那你要是想让这个隐藏索引有效的话呢,大家呢,可以把这个值呢,给它改成是一个on啊,那通过这个set的方式呢,我们去把它改成是on就行来。CTRLC下。
29:00
啊,这个我们在这儿呢,再做一个记录啊,然后回到我们这个,哎,叉叉L这个位置,我们粘过来,然后回车,哎,我们就执行成功了,执行成功以后呢,我们再调出刚才这样的一个指令,大家你再看我们这个位置啊叫use invisible啊,Indexes,那这个呢,是不是就个on啊,哎表示了我们现在呢,哎叫什么呀?呃,不可见的索引,对于我们这个优化器呢,它目前呢,是一个可见的一个状态。啊,是一个可见的状态,呃,那要是一个可见的状态的话呢,你看我们刚才呢,是不是把嗯这个索引呢改诶把哪个索引,把这个索引是吧,改成是一个不可见的了。啊,把它改成不可见了,这个呢,对应的是不是就我们这个呀,哎,那么现在呢,诶大家你看啊,我们CTRLC一下,我把它那拿过来,此时的话呢,我们这个字段对应的这个索引呢,它是不可见的,你看我们现在来去explain一下,咱们走起。呃,走起,哎呦这块呢有一个问题,这块有个问题,我我得我得在这块操作一下,为啥呢,咱们现在在这里边呢,是不是一个绘画啊,我在这块呢,是不是又是另外一个绘画啊,所以咱们改的呢,相当于是不同的绘画里的东西了啊,我得在咱们这个,呃,四库药这块呢,我也把这个再执行一下啊呃,通过这呢,正好大家能够看到,就是咱们现在呢,在当前这个里边啊,你这块呢去诶诶咱们就得这样跑了啊。
30:18
这块大家去select的时候呢,你去找咱们后边那个值呢,其实它还是一个off的。啊,它还是一个off啊这个。我怎么着一下复制一下是吧。来就是我们这个图形化界面这个工具里边呢,这个看它呢,就不是太方便啊,来这样呢,我们把它打开啊,CTRLV来找一下,你看是不是我说的是这个道理啊。嗯,看这是吧,哎你看这儿呢,是不是还是一个off的,哎就是因为呢,咱们这是两个绘画啊导致的,呃,那我们在这个是off的情况下呢,大家也发现呢,诶明明我们现在这个,所以呢,它是一个不可见的啊,目前的情况下呢,它这块呢,看还是一个闹的情况,现在呢,咱们把它改成是个on的情况。
31:04
诶,我改了是吧,改了以后的话呢,大家再去执行这个1PLAN,诶此时呢,你看就会发现我们这个,诶所以呢,明明不可见,但是它对我们优化器呢,竟然起作用了是吧?哎,这个呢,大家了解一下就行,哎你要想关掉的时候呢,你再把这个改成是一个off的状态。啊,这个就关了对吧?哎,关了以后啊,你看我们执行一下,你再去呢,做这样的explain的这个操作啊,这不就又是个闹了吗。诶从这个笔记上我就先保留着啊,咱们这是一个放的操作,行啊,就知道这个事儿了,这个大家做一个了解就行啊,一般的话呢,咱们就不去改这个,呃,这个值导啊,为啥呢,咱不就正好希望通过这个隐藏索引呢,它这个是隐藏的啊,这个是可见的还是不可见的啊,让我们这个优化器呢,看到或看不到,我们看看前后的一个对比呢,是吧?啊,你要让他都可见了,那这个对比的效果就出不来了啊。行,这个呢,大家做一个了解就行。那么整个呢,咱们关于这个降序索引和隐藏索引啊,咱就说到这儿,实际上呢,这里边儿已经蕴含了我们优化的这个点啊,至少呢,大家在面试当中啊,你是可以提到8.0的这两个新特性,对于我们优化呢,起到这个作用的啊,大家呢,稍微利用自己的语言来整合一下啊。
我来说两句