温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:01
好,全局索引介绍完了之后呢,咱们继续往下啊,全局索引呢,会有一个问题啊,这里呢有提到说如果你想查询的字段呢,不是索引字段的话呢,索引表不会被使用啊,也就是说呢,就不会带来查询速度的一个提升,这句话呢比较绕,但是我们展示起来啊,其实非常简单,就是在你读取的select后面读取的字段里面,你必须要是主键,或者是你创建的二级索引的那个字段啊,如果有别的字段的话就不行了,这个ID和内部都是主键对不对,你可以写H啊,但你不能写什么,不能写地址,你写这个IDDR,它不在我们的索引和主键里面,那这时候呢,就没有办法使用索引啊。咱们可以来看一下啊。CTRLC执行这么一个plan,执行计划运行。好,对应里面我们可以看到啊,它这里呢,马上就变成了全局扫描,对不对,就因为跟上面这一句的一个差别,就因为这地方多了一个其他的一个字段啊,就变成了全局扫描,那这个呢,是我们全局索引的一个问题所在啊,那如果你想要解决这个问题呢,你有两种方案啊,一个呢是使用包含索引啊,一个呢是使用本地索引啊,这是往下的一个延伸,其中呢,这个包含索引啊,本质上也是一种全局索引啊,它是全局索引的一个补充,可以包含一个字段啊,而这个本地索引呢,是另外一种索引方式了,咱们等一下再介绍,首先呢来看包含索引啊,包含索引呢,就是携带有其他字段的全局索引,它本质上还是全局索引,语法呢是create ind death my on my table啊,这是索引表的名字,这是表明这个地方就是刚才你创建的索引字段age include包含包含什么呢?包含一个ADR就可以了啊,我们首先呢,删除掉之前的这个。
01:54
索引为什么要删除避免两个索引啊呃,如果你创建多个索引表,首先创建多个索引表是可以的,然后呢,呃,你在使用的时候呢,它会哪个快就用哪个,听起来很美好对不对?哎,但是呢,它会加大你写的那个写的一个表的个数啊,你创建两个作音表,写的时候就相当于写了三张表。
02:15
一张原来的表,两张索引表嘛,对吧,相当于写三个表啊,会影响它的性能,那同时呢。我们在这里进行测试的时候,如果我创建多个索引表的话,那123那最终生效了啊,说它是一个范围扫描,那到底是谁生效呢?我们不好判断对不对,所以我们每一次在使用索引的时候呢,都把之前的索引表给它删掉,好我们把上一个索引表呢给它删掉。删掉之后呢,我们依照新的一个语法include,创建一个包含索引啊创建一个索引就比后面多了一个include a DR,然后执行。稍微等待他一下啊。好,等待它创建完这个包含索引之后呢,我们来调这个执行计划,诶可以看到它就变成了范围扫描看到了吧,这个就叫包含索引,那包含索引跟这个呃,全局索引在底层的存储上会有什么区别呢?也很简单啊,我们这边呢,来扫描一下就知道了啊,叫干。
03:14
啊。单引号或者双引号都可以啊,My index索引表啊。单引号执行。好,我们再来扫描这个表呢,可以看到啊,它之前呢,只有这一行一个cel的一个数据啊,后面呢,是用一个占位符来表示的,这里呢有1001和张三对吧,那对应的如果你使用包含索引的话,它变成两个3L了,同时呢,会存储一下这个,这是对应的那个列名啊,只是也经过序列化了,这是我们对应的那个值,看到没有,因为它存了这个值了,所以它在查询的时候呢,速度会变快啊,速度会变快啊,那这个呢,就是我们所谓的包含,所以啊所谓的吧,我们呢是推荐大家去使用这个包含索引的,因为你真正在读数据的时候啊,你是不好确定说你具体要读哪一哪几列的,通常情况下呢,这好多个列的数据呢,我们都是会使用到的啊,那你用包含索引呢,把后边这个字段给包含进去,也能达到一个加速查询的一个效果。
我来说两句