✅MySQL建了abc的联合索引,底层会建a,ab, abc这3个索引么?
典型回答
不会,索引只有一个,也就是你指定的 (a, b, c) 这个复合索引。 并不会单独创建a,或者ab的索引。也就是最终的索引树上只有一个。会把三个字段都放到树的节点中。
之所以会有这么个问题,是因为很多人知道,(a, b, c)这个联合索引创建之后,按照a、a和b、a和c、a和b和c查询,都能用到索引。
✅A,B,C的联合索引,按照 AB,AC,BC查询,能走索引吗?
但是这是因为索引的查询遵循最左前缀匹配原则,存储的时候是按照a,b,c的顺序来的,也就是只要查询时候包含最左字段就能用到索引,但是索引树还是只有一棵的。