mysql索引怎么设计_mysql索引设计

mysql索引设计

1.B树与B+树的区别?

B-Tree:一个节点可以拥有大于2个子节点的平衡多叉树,所有关键字在整颗树中出现,包括在非叶子节点也能命中,

叶子节点之间没有链表

B+Tree:每个叶子节点包含指向一个叶子节点的指针,方便范围遍历,所有记录在同一层的叶子节点中。

2.MySQL中HASH索引和B+树索引的区别?

hash索引,基于哈希表实现,不是顺序存储,只正对于精确匹配的查询有效,对每一行数据,存储引擎都会

对所有的索引列计算一个哈希码,哈希索引将哈希码存储在索引中,同时在哈希表中存储指向每个数据行的指针。

B+Tree:按照索引键顺序存储,适合范围查找。

3.聚簇索引与辅助索引的区别?

聚餐索引:主键的B+Tree,叶子节点包含记录行的所有数据,按照主键顺序存放,

辅助索引:叶子节点除了包含键值以外,每个叶子节点的索引行还包含一个书签(bookmark),告诉innodb存储引擎

在哪里可以找到与索引行对应的数据,辅助索引的存在并不影响数据在聚集索引中的组织。

当通过辅助索引来寻找数据时,innodb会遍历辅助索引并通过叶级别的指针获得指向主键索引的键值,然后在通过

主键索引来找到一个完整的记录行。

mysql索引设计 1.B树与B+树的区别? B-Tree:一个节点可以拥有大于2个子节点的平衡多叉树,所有关键字在整颗树中出现,包括在非叶子节点也能命中, 叶子节点之间没有链表 B+Tree:每个叶子节点包含指向一个叶子节点的指针,方便范围遍历,所有记录在同一层的叶子节点中。 2.MySQL中HASH索引和B+树索引的区别? hash索引,基于哈希表实现,不是顺序存储,只正对于精确匹配的查询有效,对每一行数据,存储引擎都会 对所有的索引列计算一个哈希码,哈希索引将哈希码存储在索引中,同时在哈希表中存储指向每个数据行的指针。 B+Tree:按照索引键顺序存储,适合范围查找。 3.聚簇索引与辅助索引的区别? 聚餐索引:主键的B+Tree,叶子节点包含记录行的所有数据,按照主键顺序存放, 辅助索引:叶子节点除了包含键值以外,每个叶子节点的索引行还包含一个书签(bookmark),告诉innodb存储引擎 在哪里可以找到与索引行对应的数据,辅助索引的存在并不影响数据在聚集索引中的组织。 当通过辅助索引来寻找数据时,innodb会遍历辅助索引并通过叶级别的指针获得指向主键索引的键值,然后在通过 主键索引来找到一个完整的记录行。
经验分享 程序员 微信小程序 职场和发展