当前位置:   article > 正文

MySQL高级(索引结构Hash,为什么InnoDB存储引擎选择使用B+tree索引结构?)

MySQL高级(索引结构Hash,为什么InnoDB存储引擎选择使用B+tree索引结构?)

目录

1、Hash索引结构 

 2、Hash索引特点

 3、存储引擎支持

 4、为什么InnoDB存储引擎选择使用B+tree索引结构?


1、Hash索引结构 

  • 哈希索引就是采用一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中。

  • 如果两个(或多个)键值,映射到一个相同的槽位上,他们就产生了hash冲突(也称为hash碰撞),可以通过链表来解决。

 2、Hash索引特点

  1. Hash索引只能用于对等比较(=,in),不支持范围查询(between,>,<,...)
  2. 无法利用索引完成排序操作
  3. 查询效率高,通常只需要一次检索就可以了,效率通常要高于 B + tree索引

 3、存储引擎支持

  • 在MySQL中,支持hash索引的是Memory引擎,而InnoDB中具有自适应hash功能,hash索引是存储引擎根据B+Tree索引在指定条件下自动构建的。

 4、为什么InnoDB存储引擎选择使用B+tree索引结构?

  • 相对于二叉树,层级更少,搜索效率高;
  • 对于B-tree,无论是叶子节点还是非叶子节点,都会保存数据,这样导致一页中存储的键值减少,指针跟着减少,要同样保存大量数据,只能增加树的高度,导致性能降低;
  • 相对Hash索引,B + tree支持范围匹配及排序操作;
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/441493
推荐阅读
相关标签
  

闽ICP备14008679号