* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。

索引介绍

索引是一种特殊的数据库结构,被设计用来快速查询数据库表中的特定记录。索引有多种类型,就像字典有拼音查找和偏旁查找一样都是为了提高检索效率。MySQL中最常见的索引类型有B+树索引哈希索引,下面来简单介绍一下这两种索引类型有哪些差别和优劣。

B+树索引

B+树索引是一种多路径的平衡搜索树,具有如下特点:

  • 1.非叶子节点不保存数据,只保存索引值

  • 2.叶子节点保存所有的索引值和数据

  • 3.同级节点通过指针自小而大顺序链接

  • 4.节点内的数据也是自小而大顺序存放

  • 5.叶子节点拥有父节点的所有信息

结构如下图:

优点

  • 由于数据顺序存放,所以无论是区间还是顺序扫描都更快。

  • 非叶子节点不存储数据,因此几乎都能放在内存中,搜索效率更高

  • 单节点中可存储的数据更多,平均扫描I/O请求树更少

  • 平均查询效率稳定(每次查询都从根结点到叶子结点,查询路径长度相同)

缺点

  • 新增数据不是按顺序递增时,索引树需要重新排列,容易造成碎片和页分裂情况。

哈希索引

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

  • 1.哈希索引建立在哈希表的基础上

  • 2.对于每个值,需要先计算出对应的哈希码(Hash Code),不同值的哈希码唯一

  • 3.把哈希码保存在哈希表中,同时哈希表也保存指向对应每行记录的指针

结构如下图:

优点

  • 大量唯一等值查询时,哈希索引效率通常更高。

缺点

  • 哈希索引对于范围查询和模糊匹配查询显得无能为力。

  • 哈希索引不支持排序操作,对于多列联合索引的最左匹配规则也不支持。

  • 哈希索引不支持前缀索引,因为哈希索引始终是使用索引列的全部内容来计算哈希值。

  • 如果存在哈希冲突的情况,也就是不同的索引列有着相同的哈希值,这时候需要遍历链表中所有的行指针进行逐行比对,直到找到所有满足条件的行,效率较低。

Enjoy GreatSQL :)


《深入浅出MGR》视频课程

戳此小程序即可直达B站

https://www.bilibili.com/medialist/play/1363850082?business=space_collection&business_id=343928&desc=0



文章推荐:

  • MySQL Replication之并行复制

  • MySQL Shell for GreatSQL 8.0.25-16编译安装及使用

  • MySQL Shell无法拉起MGR集群解决办法

  • Linux环境监控工具汇总

  • MySQL主从复制之半同步(semi-sync replication)

  • MySQL复制主从实例表DDL不一致导致失败案例


想看更多技术好文,点个“在看”吧!

MySQL B+树索引和哈希索引介绍相关推荐

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

    B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域. B+树 B+树是为磁盘及其他存储辅助设备而设计一种平衡查找树(不是二叉树).B+ ...

  2. MySQL B+树索引和哈希索引的区别

    导读 在MySQL里常用的索引数据结构有B+树索引和哈希索引两种,我们来看下这两种索引数据结构的区别及其不同的应用建议. 二者区别 备注:先说下,在MySQL文档里,实际上是把B+树索引写成了BTRE ...

  3. MySQL 索引 :哈希索引、B+树索引、最左前缀匹配规则、全文索引

    文章目录 索引 什么是索引 索引优缺点与适用场景 常见的索引 哈希索引 自适应哈希索引 B+树索引 聚集索引 非聚集索引 使用方法 联合索引 最左前缀匹配规则 覆盖索引 全文索引 使用方法 索引 什么 ...

  4. MySQL 索引 :哈希索引、B+树索引、全文索引

    文章目录 索引 引言 常见的索引 哈希索引 自适应哈希索引 B+树索引 聚集索引 非聚集索引 使用方法 联合索引 最左前缀匹配规则 覆盖索引 全文索引 使用方法 索引 引言 为什么需要索引? 倘若不使 ...

  5. MySQL索引(B+Tree 索引、哈希索引、全文索引、 空间数据索引)、索引优化、优点、使用场景

    1. MySQL 索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现. 1.1 B+Tree 索引 是大多数 MySQL 存储引擎的默认索引类型. 因为不再需要 ...

  6. B+树索引和哈希索引

    转自:https://www.cnblogs.com/zengkefu/p/5647279.html 导读 在MySQL里常用的索引数据结构有B+树索引和哈希索引两种,我们来看下这两种索引数据结构的区 ...

  7. B+树索引和哈希索引的区别——我在想全文搜索引擎为啥不用hash索引而非得使用B+呢?...

    哈希文件也称为散列文件,是利用哈希存储方式组织的文件,亦称为直接存取文件.它类似于哈希表,即根据文件中关键字的特点,设计一个哈希函数和处理冲突的方法,将记录哈希到存储设备上. 在哈希文件中,是使用一个 ...

  8. mysql hash创建_Mysql自适应哈希索引(Adaptive Hash Index)创建的条件

    官方文档: If a table fits almost entirely in main memory, a hash index can speed up queries by enabling ...

  9. 数据库中的索引技术——哈希索引

    1.哈希索引 哈希索引(hash index)基于哈希表实现,只有精确匹配索引所有列的查询才有效.对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码(hash code),哈希码是一个较小的值, ...

最新文章

  1. HDU 2660 Accepted Necklace
  2. 架设自己的WebDAV服务器作为AutoCAD WS的数据存储
  3. RDS最佳实践(三)—如何制定相关的流程来规范RDS的使用
  4. pycharm 如何通过VCS快速提交代码?
  5. 【视频】vue表单提交
  6. hdu 2160 母猪的故事(睡前随机水一发)(斐波那契数列)
  7. ssh客户端_一款基于TAS框架的SSH客户端蠕虫
  8. 安卓button设置背景图_这些安卓源码调试技巧,不懂的人月薪绝对不过 30k !
  9. 下标索引必须为正整数类型或逻辑类型_python量化基础 | 变量和简单的数据类型,零基础都可以看懂...
  10. ViewPager,使用Fragment实现
  11. c#无标题窗口的拖动
  12. 全国市级城市拼音-中文对照表(json格式)
  13. java读取txt文件内容_Java读取TXT文件内容的方法
  14. 使用机器学习对美股涨跌预测系统的探究
  15. Ubuntu下的快捷键截图
  16. 24岁华为Java程序员工资表曝光,牛逼的人注定会牛逼
  17. 解决:outlook邮件内容过宽,打印不全
  18. 大模型多模态Chatgpt+自动驾驶控制器设计方案
  19. springmvc接收用户提交的数据
  20. Android studio 之 高级调试技巧,看这一篇够啦

热门文章

  1. 如何根据用例图写出用例描述
  2. Mac应用程序无法打开或文件损坏的处理方法,Mac任何来源开启教程
  3. 【pytorch】(六)保存和加载模型
  4. 计算机网络技术手抄报既简单又漂亮,2020网络安全的手抄报简单又好看资料
  5. docker挂载内容与容器内容不同步(有时候延迟同步)
  6. python制作照片_Python-制作抖音图片
  7. python单词按字典序输出_python按字典顺序输出单词频率_Python:如何添加频率行数并使用字典按字母顺序排序......
  8. 根据旺、淡季,计算头等舱和商务舱打折的票价
  9. TCP握手过程和挥手过程
  10. 电子政务私有云盘系统建设必备-Mobox政务盘