快捷搜索: 王者荣耀 脱发

谈谈你对最左前缀原则的理解(重点)

首先我们要知道最左匹配原则是什么?

最左匹配原则:最左优先,以最左边的为起点任何连续的索引都能匹配上,

MySQL会一直向右匹配直到遇到范围查询(>,<,between,like)就停止匹配。

个人对最左前缀的理解

MySQL中的索引可以以一定顺序引用多列,这种索引叫作联合索引。如User表的name和city加联合索引就是(name,city),而最左前缀原则指的是,如果查询的时候查询条件精确匹配索引的左边连续一列或几列,则此列就可以被用到。如下:

select * from user where name=xx and city=xx ; //可以命中索引
select * from user where name=xx ; // 可以命中索引
select * from user where city=xx ; // 无法命中索引

这里需要注意的是,查询的时候如果两个条件都用上了,但是顺序不同,

如 city= xx and name =xx,那么现在的查询引擎会自动优化为匹配联合索引的顺序,这样是能够命中索引的。

由于最左前缀原则,在创建联合索引时,索引字段的顺序需要考虑字段值去重之后的个数,较多的放前面。ORDER BY子句也遵循此规则。

经验分享 程序员 微信小程序 职场和发展