MySQL之存储引擎InnoDB和MyISAM的区别及底层详解
InnoDB的帮助索引数据域存储的也是响应记录主键的值而不是地点,以是当以帮助索引查找时,会先按照帮助索引找到主键,再按照主键索引找到现实的数据。以是Innodb不提议行使过长的主键,不然会使帮助索引变得过大。 提议行使自增的字段作为主键,这样B+Tree的每一个结点城市被次序的填满,而不会频仍的破碎调解,会有用的晋升插入数据的服从。 主索引如下: 帮助索引如下: 上图,可以看到叶节点包括了完备的数据记录。这种索引叫做聚积索引。由于InnoDB的数据文件自己要按主键聚积,以是InnoDB要求表必需有主键(MyISAM可以没有),假如没有显式指定,则MySQL体系会自动选择一个可以独一标识数据记录的列作为主键,假如不存在这种列,则MySQL自动为InnoDB表天生一个隐含字段作为主键,这个字段长度为6个字节,范例为长整形。 并且,与MyISAM索引的差异是InnoDB的帮助索引data域存储响应记录主键的值而不是地点。换句话说,InnoDB的全部帮助索引都引用主键作为data域。 因此,进程为:将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若行使”where id = 13”这样的前提查找主键,则凭证B+树的检索算法即可查找到对应的叶节点,之后得到行数据。若对Name罗列办前提搜刮,则必要两个步调:第一步在帮助索引B+树中检索Name,达到其叶子节点获取对应的主键。第二步行使主键在主索引B+树种再执行一次B+树检索操纵,最终达到叶子节点即可获取整行数据。 两种索引数据查找进程如下: ![]() 【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |