面试题:最左匹配原则

如何创建索引:

面试题:最左匹配原则

 

 

组合索引的使用:

最左原则:

       假设组合索引为:a,b,c的话;那么当SQL中对应有:a或a,b或a,b,c的时候,可称为完全满足最左原则;当SQL中查询条件对应只有a,c的时候,可称为部分满足最左原则;当SQL中没有a的时候,可称为不满足最左原则

注:MySQL5.7开始,会自动优化,如:会把c,b,a优化为a,b,c使之完全遵循最左原则;会把c,a优化为a,c使之部
       分遵循最左原则
。即:SQL语句中的对应条件的先后顺序无关。

准备工作:

面试题:最左匹配原则

创建了组合索引:e_name,e_age,e_country,e_city

使用情况:

完全满足最左原则

面试题:最左匹配原则

注:与条件的先后无关(这是因为MYSQL5.7开始,对索引全排列有优化,会自动优化为按组合索引的顺序进行查询)
       即:下面这样的话,也是会完整的走组合索引的:

面试题:最左匹配原则

部分满足最左原则

面试题:最左匹配原则

注:此SQL中,只有e_name和e_country满足部分最左原则(e_name满足),所以到e_name字段时会走组合所以,但是
       只会走到e_name那里,到e_country时就不会使用组合索引了。

不满足最左原则

面试题:最左匹配原则

满足(部分满足)最左原则的字段里,有字段不满足“索引”自身的使用规范

说明:如果SQL语句里的字段里,满足了最左原则,但是不满足“索引”自身的使用规范,那么组合索引走到这里之后,
           不会再往下走了。

面试题:最左匹配原则

如图所示:由于e_age字段使用了“>”符号,不符合“索引”自身的使用规范,那么当“e_name”走完组合索引后,
                  走到“e_age”时,该字段及其后面的字段不会再走组合索引了。

 

 

 

转发于https://blog.****.net/justry_deng/article/details/81458470