面试题:最左匹配原则
如何创建索引:
组合索引的使用:
最左原则:
假设组合索引为: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