InnoDB
InnoDB 中 B+ 树的数据结构中存储的都是实际的数据,这种索引又被称为聚集索引。
由于 InnoDB 利用的数据库主键作为索引 Key,所以 InnoDB 数据表文件本身就是主索引。
- 所以使用 InnoDB 作为数据引擎的表需要有个主键
- 如果没有显式指定的话 MySQL 会尝试自动选择一个可以 唯一标识数据的列作为主键
- 如果无法找到,则会生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。
MyISAM
MyISAM 中 B+ 树的数据结构存储内容是实际的地址值,它的索引和实际数据是分开的,只不过使用索引指向了实际数据,这种索引的模式成为非聚集索引。
在 MyISAM 中,主索引和辅助索引(Secondary key )在结构上没有任何区别:
MyISAM 中索引检索的算法为首先按照 B+Tree 搜索算法搜索索引,如果指定的 Key 存在,则取出其 data 域的值,然后以 data 域的值为地址,读取相应数据记录。
参考链接:https://github.com/Apriluestc/2020/blob/master/doc/MySQL/README.md