问题 1:mysql 给表中的 a,b,c 三个列建立联合索引,select * from t where a=1 and b > 2 order by c,面试官问会不会走这个联合索引,我说:会,因为满足了最左前缀匹配。面试说让我下去好好了解了解。
问题 1:像这种联合索引碰到范围查询后的字段就不会走索引了, 也就是 a 和 b 会走索引,而 c 不会走索引,因为在 B+树中,会根据条件 a=1 和 b>2 找到相应的叶子节点,查询出来的结果如果为(1,3,1),(1,5,0),那么根据 order by c 就要重新排序为,(1,5,0),(1,3,1),所以 c 是不会用到索引的。但是索引还是会走这个联合索引。