MYISAM存储引擎(非聚集索引)
非聚集索引:索引跟数据分开在不同的文件存储
聚集索引:索引跟数据在同一个文件存储
聚簇索引==聚集索引 稀疏索引==非聚集索引
聚集索引根据索引找到文件所对应位置 的指针 再根据指针找到对应的文件数据 聚集索引找到索引元素以后直接在当前文件load数据就可以了。聚集索引只再一个文件里查找 效率可能比非聚集索引效率更高。
.frm存储表结构文件
,mym存储的是索引文件
.MYD存储的是数据
innoDB
InnoDB数据索引实现
- 表数据文件本身就是B+树组织的一个索引结构文件
- 聚集索引-->叶节点包含了完整的数据记录
- 为什么InnoDB表必须有主键,并且推荐使用整型的自增主键?
-->MySQL在开发InnoDB表底层存储引擎的时候,这张表的数据必须要有一个B+树的索引来组织,一般来说我们都是用主键这样的B+树来组织我们的数据,如果不建逐渐的话,MySQL会帮你选择一个字段(不重复的字段)作为主键,作为主键索引。用这个主键来维护整张表里面的所有的数据。如果找不到主键字段 会在后台建立一个隐藏列,隐藏列可能是整型的,他来帮你去维护这些数据。(MySQL帮你维护一个唯一索引的隐藏列,用这个隐藏列来帮你组织整张表的所有数据) 整型数据比较大小比字符串方便。非自增的索引插入的时候很麻烦,节点可能会分裂以维持平衡。
- 为什么非主键索引结构叶子结点存储的是主键值(一致性和节省存储空间)?
.frm表结构
.ibd索引和数据
B树和B+树的区别:(B+树的指针是双向的)