索引使用
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:在上面这组测试