不走组合索引的底层原因

有组合索引A,B 条件where B=x 不走该索引的原因是什么 为什么跟它字段顺序有关系 有大佬能从索引底层的b-tree原理上回答下吗?

阅读 2.8k
2 个回答

打个比方,你可以理解索引就是字典里面的拼音目录,如果想查一个字“中”,那么我们会知道首字母是z,直接就去z的部分查文字的具体页数。
假如我们不知道“中”的声母,只知道韵母是“ong”,那么这个拼音的目录就没法快速查询了。

对应到mysql中,可以理解字段A是声母,B是韵母,合起来构成组合索引就是拼命目录表,根据B字段内容查询,和用韵母查字典的拼音目录原理上一样的。

组合索引,因为你的字段是ab,那么会生成两个索引a和ab。
a索引就不要想了。
ab索引因为你没有指定a字段,所以就不能走索引了。