MySQL的InnoDB引擎的索引底层大多是B+树,在聚簇索引中,其叶子节点是一个键值对,其键为
- 如果有主键,那么主键是B+树的键
- 如果没有主键,就找是否存在没有NULL值的唯一列,存在则用他作为B+树的键
- 如果都没有,则自动生成一个隐式自增的rowid
但是联合索引有所不同,他的键是由每个字段的值按照索引定义的顺序依次排列,形成一个复合的键值。
比如A_B_C索引,那么他会先对A进行排序,再对B,再对C,所以说只有在保证A的顺序的时候,才能保证B的顺序,才能保证C的顺序,所以联合索引的使用要遵循最左前缀原则。