MySql进阶篇(四)----索引的使用与生效情况

4.1.索引效率提升验证:

在讲解索引的使用原则之前,先通过一个简单的案例,来验证一下索引,看看是否能够通过索引来提升数据查询性能。在演示的时候,我们还是使用之前准备的一张表 tb_sku , 在这张表中准备了 1000w的记录。
这张表中 id 为主键,有主键索引,而其他字段是没有建立索引的。 我们先来查询其中的一条记录,看看里面的字段情况,执行如下SQL
select * from tb_sku where id =1;
可以看到(自己实验)即使有 1000w 的数据 , 根据 id 进行数据查询 , 性能依然很快,因为主键 id 是有索引的。 那么接下来,我们再来根据 sn 字段进行查询,执行如下 SQL:
select * from tb_sku where sn='100000003145001';
我们可以看到根据 sn 字段进行查询,查询返回了一条数据,结果耗时 20.78sec ,就是因为 sn 没有索引,而造成查询效率很低。
那么我们可以针对于 sn 字段,建立一个索引,建立了索引之后,我们再次根据 sn 进行查询,再来看一下查询耗时情况。
-- 创建索引
create index idx_sku_sn on tb_sku(sn);
然后再次执行相同的 SQL 语句,再次查看 SQL 的耗时。
我们明显会看到, sn 字段建立了索引之后,查询性能大大提升。建立索引前后,查询耗时都不是一个数量级的。

4.2.最左前缀法则:

 如果索引了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。如果跳跃某一列,索引将会部分失效(后面的字段索引失效)。以 tb_user 表为例,我们先来查看一下之前 tb_user 表所创建的索引。

show index from tb_user;

tb_user 表中,有一个联合索引,这个联合索引涉及到三个字段,顺序分别为: profession
age status
对于最左前缀法则指的是,查询时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值