InnoDB 是 MySQL 默认的存储引擎之一,它的索引模型可以理解为 B+ 树索引模型。
在 InnoDB 中,每张表都有一个主键索引,如果没有显式地定义主键,InnoDB 会自动创建一个长度为6字节的隐含主键。除了主键索引之外,InnoDB 还支持非聚集索引,即辅助索引。在 InnoDB 中,辅助索引中的每一项都包含了对应的主键值,这样 InnoDB 就可以通过辅助索引查找到对应的主键值,然后再通过主键索引定位到具体的行数据。
在 InnoDB 的索引模型中,所有的数据都是按照主键顺序存储的,也就是说,表中所有的数据都是按照主键索引的 B+ 树结构进行组织和存储的。同时,辅助索引也是按照 B+ 树的结构进行组织和存储的。
这种索引模型的好处是能够高效地支持范围查询、排序、分组等操作,同时也能够保证数据的物理顺序和逻辑顺序一致,降低了磁盘 I/O 操作次数,提高了查询效率。
需要注意的是,在 InnoDB 中,主键索引和辅助索引都是采用 B+ 树索引模型,但是它们在存储方式上有所区别,主键索引的叶子节点存储的是完整的行数据,而辅助索引的叶子节点存储的是对应行数据的主键值和辅助索引的键值。这种存储方式使得 InnoDB 在辅助索引查找时需要多一次查找主键的操作,但也使得辅助索引的存储空间更小,可以容纳更多的索引项。