美文网首页
哈希索引、B树索引

哈希索引、B树索引

作者: nagioswork | 来源:发表于2018-01-13 14:24 被阅读128次

Hash索引结构图


image.png

哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值,检索时不需要类似B树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可立刻定位到相应的位置,速度非常快。

B树索引和哈希索引的明显区别是:

如果是等值查询,那么哈希索引明显有绝对优势,因为只需要经过一次算法即可找到相应的键值;当然了,这个前提是,键值都是唯一的。如果键值不是唯一的,就需要先找到该键所在位置,然后再根据链表往后扫描,直到找到相应的数据;

从示意图中也能看到,如果是范围查询检索,这时候哈希索引就毫无用武之地了,因为原先是有序的键值,经过哈希算法后,有可能变成不连续的了,就没办法再利用索引完成范围查询检索;

同理,哈希索引也没办法利用索引完成排序,以及like ‘xxx%’ 这样的部分模糊查询(这种部分模糊查询,其实本质上也是范围查询);

哈希索引也不支持多列联合索引的最左匹配规则;

在有大量重复键值情况下,哈希索引的效率也是极低的,因为存在所谓的哈希碰撞问题。

B-Tree
B树索引结构图


image.png

倒排

  • B 树如果每个内部节点存的是具体的value,叶子节点存 id,那么这就是个倒排
  • 真实场景中,的确有不少搜索引擎是这么存倒排的

正排

  • 如果内部节点存 Id,叶子节点存内容,这就是个正排
  • 真实场景中,mysql 的 pk 索引就是这么存的
  • 行存列存
    • 如果正排的 B-tree 的叶子节点存的是一行的值,那么这就是行存,反之,如果是一列的值,就是列存

一般而言,B-Tree 就是索引文件落盘,而 HashTable 则可以以散列存储。

相关文章

  • mysql学习笔记(二) 索引

    1. 引子 InnoDB存储引擎支持以下几种常见的索引: ❑B+树索引 ❑全文索引 ❑哈希索引 2. B+树索引 ...

  • Mysql DBA-索引篇

    索引类型: 1.按照数据结构角度:B+树索引,哈希索引,FULLTEXT索引 1)B+树索引: B+的特性:1.所...

  • 索引

      InnoDB支持B+树索引、全文索引、哈希索引三种索引方式。 B+树的创建和删除操作   B+树的B是平衡(B...

  • MySQL索引原理及实现

    MySQL数据库支持多种索引,例如B树索引、哈希索引、全文索引等,本文着重讲解下B树索引。 主要内容: 索引本质 ...

  • Mysql InnoDB B+树索引和哈希索引的区别?Mongo

    Mysql InnoDB B+树索引和哈希索引的区别?MongoDB 为什么使用B-树?

  • 哈希索引、B树索引

    Hash索引结构图 哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值,检索时不需要类似B树那样从根节点到叶子...

  • 第五章 索引与算法

    InnoDB存储引擎支持的常见索引:B+树索引,全文索引,哈希索引 B+树索引能找到的只是被查找数据行所在的页,然...

  • mysql原理(七)索引与算法

    InnoDB存储引擎支持以下几种索引:1)B+树索引2)哈希索引:InnoDB会根据使用情况自动生成自适应哈希索引...

  • InnoDB索引

    1. InnoDB存储引擎索引概述 InnoDB支持以下常见索引: B+树索引 全文索引 哈希索引 ​  Inno...

  • 第五章 索引与算法(上)

    5.1 InnoDB存储引擎索引概述InnoDB存储引擎支持以下几种常见索引: B+树索引 全文索引 哈希索引 I...

网友评论

      本文标题:哈希索引、B树索引

      本文链接:https://www.haomeiwen.com/subject/pxycoxtx.html