掌握MySQL索引:策略与最佳实践——索引使用(三)

1、引言

本专栏旨在深入探讨MySQL中的索引策略及其最佳实践。我们将从理论基础出发,逐步过渡到实际应用场景,帮助读者理解如何正确地创建和维护索引,以达到最优的性能表现无论你是刚刚接触数据库的新手还是经验丰富的开发者,本文都将为你提供有价值的信息和指导,帮助你在日常工作中更有效地利用MySQL索引来提升数据库性能

2、索引得使用 (重要、重要、重要)

2.1、索引失效得情况

2.1.1、最左前缀原则

如果存在联合索引,要遵守最左前缀法则。即查询从索引的最左列开始,并且不跳过索引中的列,如果跳跃其中某一列,索引将会部分失效(后面的字段索引失效)。

假设user表中有一个联合索引,涉及三个字段,顺序为:profession(索引长度为47), age(索引长度为2), status(索引长度为5)

explain select * from tb_user where profession = '软件工程 ’ and age = 31 and status=‘0’;

explain select * from tb_user where profession = '软件工程 ’ and age = 31 ;

explain select * from tb_user where profession = '软件工程‘;

结论1:在上面三组测试中,我们发现只要联合索引最左边的字段profession存在,索引就会生效

explain select * from tb_user where age = 31 and status=‘0’;

explain select * from tb_user where status=‘0’;

结论2:在上面两组测试中,我们发现只要联合索引最左边的字段 profession不存在,索引并未生效

explain select * from tb_user where profession = '软件工程 ’ and status=‘0’;

结论3:在上面这组测试中,联合索引最左边的列profession字段是存在的,索引满足最左前缀法则的基本条件。但是查询时,跳过了age这个列,所以后面的列索引是不会使用的,也就是索引部分生效,所以索引的长度为47

explain select * from tb_user where age = 31 and status=‘0’ and profession = '软件工程’;

结论4:在上面这组测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码的张姆斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值