索引的常见模型

  • 哈希表:仅使用等值查询
  • 有序数组:二分查找,区间查询友好,更新效率低,仅适用于静态存储引擎
  • 搜索树:由于二叉树高度较高,磁盘IO次数过多,所以实际使用N叉树。树根的数据块缓存于内存,树的第二层也有很大概率在内存中,进一步减少了访问磁盘的平均次数。

InnoDB索引模型

每一个索引在InnoDB中都对应一颗B+树。
主键索引的叶子结点存的是整行数据(聚簇索引)
非主键索引的叶子结点存储的是主键值(二级索引)
也就是说基于二级索引的查询会有一次回表。

索引维护

B+树为了维护有序性,在插入新值的时候需要做必要的维护。
自增主键:每次插入都是追加操作,不涉及记录的挪动与叶子结点的分裂。
主键长度越小,二级索引的叶子结点就越小,占用的空间也就越小。
如果删除,新建主键索引,会同时去修改二级索引的叶子结点,性能消耗大。

收藏 打印