mysql数据库索引介绍-最左前缀(二)
本篇文章主要从select的查询语句中来分析索引的使用。
索引的最左前缀原则
从上篇文章中可以看出索引其实就是一个查询性能优的有序的数据结构,那么想要在select语句中应用上索引就要明白索引的最左前缀原则。下面以一个例子来说明:
user表表结构为:
在user表中用(name,age,area)联合字段创建一个索引
表中插入几条测试数据:
此二级索引的树结构为:
可以看到此索引排序的顺序为:
1)首先按name字段进行排序;
2)若name字段值相等,则按第二个字段age进行排序;
3)若name、age都相等,则按最后一个字段area进行排序;
故应用索引的重要的就是有序、有序、有序,当sql中有使用索引字段条件的时候,请按b +tree结构想象是否有序。
下面我们使用3个简单sql来验证是否走索引:
1)select * from user where name=‘b’ and age=30;
2)select * from user where age=30 and area=‘bj’;
3)select * from user where age>20;
请思考下这三条sql哪个会走索引(参照上面的索引结构图):
答案:第一条sql会走索引。
我们使用explain命令来验证下:
1)因为索引字段排序为name、age、area,故这个sql 的name、age按上面的b 树结构是有序的,所以条件会走索引2)这个sql中的虽然age、area也是索引字段,但是按照上面的树结构,是首先按照name排序的,如果只使用age和area查找是无序的,故不会走索引
3)其原理和第二个sql是一样的,只用age,是无法使用索引的,要记住走索引是要有序的
以上就是此次的索引最左前缀原理的分享。