MySQL B+树索引和哈希索引介绍
* 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+树索引和哈希索引介绍相关推荐
- Mysql InnoDB B+树索引和哈希索引的区别? MongoDB 为什么使用B-树?
B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域. B+树 B+树是为磁盘及其他存储辅助设备而设计一种平衡查找树(不是二叉树).B+ ...
- MySQL B+树索引和哈希索引的区别
导读 在MySQL里常用的索引数据结构有B+树索引和哈希索引两种,我们来看下这两种索引数据结构的区别及其不同的应用建议. 二者区别 备注:先说下,在MySQL文档里,实际上是把B+树索引写成了BTRE ...
- MySQL 索引 :哈希索引、B+树索引、最左前缀匹配规则、全文索引
文章目录 索引 什么是索引 索引优缺点与适用场景 常见的索引 哈希索引 自适应哈希索引 B+树索引 聚集索引 非聚集索引 使用方法 联合索引 最左前缀匹配规则 覆盖索引 全文索引 使用方法 索引 什么 ...
- MySQL 索引 :哈希索引、B+树索引、全文索引
文章目录 索引 引言 常见的索引 哈希索引 自适应哈希索引 B+树索引 聚集索引 非聚集索引 使用方法 联合索引 最左前缀匹配规则 覆盖索引 全文索引 使用方法 索引 引言 为什么需要索引? 倘若不使 ...
- MySQL索引(B+Tree 索引、哈希索引、全文索引、 空间数据索引)、索引优化、优点、使用场景
1. MySQL 索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现. 1.1 B+Tree 索引 是大多数 MySQL 存储引擎的默认索引类型. 因为不再需要 ...
- B+树索引和哈希索引
转自:https://www.cnblogs.com/zengkefu/p/5647279.html 导读 在MySQL里常用的索引数据结构有B+树索引和哈希索引两种,我们来看下这两种索引数据结构的区 ...
- B+树索引和哈希索引的区别——我在想全文搜索引擎为啥不用hash索引而非得使用B+呢?...
哈希文件也称为散列文件,是利用哈希存储方式组织的文件,亦称为直接存取文件.它类似于哈希表,即根据文件中关键字的特点,设计一个哈希函数和处理冲突的方法,将记录哈希到存储设备上. 在哈希文件中,是使用一个 ...
- mysql hash创建_Mysql自适应哈希索引(Adaptive Hash Index)创建的条件
官方文档: If a table fits almost entirely in main memory, a hash index can speed up queries by enabling ...
- 数据库中的索引技术——哈希索引
1.哈希索引 哈希索引(hash index)基于哈希表实现,只有精确匹配索引所有列的查询才有效.对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码(hash code),哈希码是一个较小的值, ...
最新文章
- HDU 2660 Accepted Necklace
- 架设自己的WebDAV服务器作为AutoCAD WS的数据存储
- RDS最佳实践(三)—如何制定相关的流程来规范RDS的使用
- pycharm 如何通过VCS快速提交代码?
- 【视频】vue表单提交
- hdu 2160 母猪的故事(睡前随机水一发)(斐波那契数列)
- ssh客户端_一款基于TAS框架的SSH客户端蠕虫
- 安卓button设置背景图_这些安卓源码调试技巧,不懂的人月薪绝对不过 30k !
- 下标索引必须为正整数类型或逻辑类型_python量化基础 | 变量和简单的数据类型,零基础都可以看懂...
- ViewPager,使用Fragment实现
- c#无标题窗口的拖动
- 全国市级城市拼音-中文对照表(json格式)
- java读取txt文件内容_Java读取TXT文件内容的方法
- 使用机器学习对美股涨跌预测系统的探究
- Ubuntu下的快捷键截图
- 24岁华为Java程序员工资表曝光,牛逼的人注定会牛逼
- 解决:outlook邮件内容过宽,打印不全
- 大模型多模态Chatgpt+自动驾驶控制器设计方案
- springmvc接收用户提交的数据
- Android studio 之 高级调试技巧,看这一篇够啦
热门文章
- 如何根据用例图写出用例描述
- Mac应用程序无法打开或文件损坏的处理方法,Mac任何来源开启教程
- 【pytorch】(六)保存和加载模型
- 计算机网络技术手抄报既简单又漂亮,2020网络安全的手抄报简单又好看资料
- docker挂载内容与容器内容不同步(有时候延迟同步)
- python制作照片_Python-制作抖音图片
- python单词按字典序输出_python按字典顺序输出单词频率_Python:如何添加频率行数并使用字典按字母顺序排序......
- 根据旺、淡季,计算头等舱和商务舱打折的票价
- TCP握手过程和挥手过程
- 电子政务私有云盘系统建设必备-Mobox政务盘