MyISAM和InnoDb的关系

MyISAM索引和数据是分离的(非聚集),非聚集:索引文件叶子节点存储的是索引所在行的磁盘文件地址

InnoDb主键索引聚集(索引文件叶子节点存储的是索引所在行的真实数据),非主键索引非聚集(非聚集索引树节点的data存的是主键id,所以InnoDb必须有个主键,当然最好是自增整型主键,这符合叶子节点的顺序排序规则,减少insert语句维护索引的成本)

存储文件的区别:
MyISAM是索引文件(.MYI)和数据文件(.MYD)分开存储
InnoDb是索引和数据文件都存在.IBD文件

索引是帮助mysql高效获取数据的排好序的数据结构

hash索引和b+tree索引的取舍:
hash索引不能很好的支持范围查找,但是由于b+tree索引的叶子节点是排好序的双向链表,对范围查找友好(先查到具体的叶子节点,再实现区间访问

b+tree和btree优劣:
btree的叶子节点没有双向指针所以范围查找效率不如b+tree
btree的非叶子节点也存储data,导致相同高度的情况下,b+tree能存储的元素远远大于btree

posted @ 2020-10-27 08:10  cl94  阅读(61)  评论(0编辑  收藏  举报