目录

B+ 树和 B 树的区别

B+树的结构

B树的结构

B+树索引与Hash索引的区别


B+ 树和 B 树的区别

1、b树(balance tree),B+树是B树的改进版

2、B+树非叶子节点仅用于索引,不保存数据记录,跟记录有关的信息都放在叶子节点中。而 B 树中, 非叶子节点既保存索引,也保存数据记录。

3、由于B+树只有叶子节点存储数据,所有B+树能够记录更多的索引,这棵树更加“矮胖”,这样搜索效率更高,更稳定。

4、B+树所有数据都在叶子节点出现,叶子节点构成一个有序链表,而且叶子节点本身按照关键字的大小从小到大顺序链接(单向链表)

5、对于范围查询来说,B+树只需要遍历叶子节点链表即可,而B树需要重复中序遍历去遍历数据。

6、B+树的随机查找、插入和删除过程基本与B树类似

B+树的结构

B树的结构

B+树索引与Hash索引的区别

1、Hash索引不能进行范围查询,而B+树可以。这是因为Hash索引指向的数据是无序的,而B+树的叶子节点是个有序的链表。

2、Hash索引不支持联合索引的最左侧原则(即联合索引的部分索引无法使用),而B+树可以。

对于联合索引来说,Hash索引在计算Hash值的时候是将索引键合并后再一起计算Hash值,所以不会针对每个索引单独计算Hash值。因此如果用到联合索引的一个或者几个索引时,联合索引无法被利用。

3、Hash索引不支持 ORDER BY 排序,因为Hash索引指向的数据是无序的,因此无法起到排序优化的作用,而B+树索引数据是有序的,可以起到对该字段ORDER BY 排序优化的作用。

同理,我们也无法用Hash索引进行模糊查询,而B+树使用LIKE进行模糊查询的时候,LIKE后面后模糊查询(比如%结尾)的话就可以起到优化作用。

4、InnoDB不支持哈希索引

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦

B+树与B树的区别、Hash索引与B+树索引的区别相关推荐

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

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

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

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

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

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

  4. Hash索引和B+树索引

    hash索引底层就是hash表,进行查找时,调用一次hash函数就可以获取到相应的键值,之后进行回表查询获得实际数据.B+树底层实现是多路平衡查找树.对于每一次的查询都是从根节点出发,查找到叶子节点方 ...

  5. 刷题总结——树的同构(bzoj4337 树上hash)

    Description 树是一种很常见的数据结构.  我们把N个点,N-1条边的连通无向图称为树.  若将某个点作为根,从根开始遍历,则其它的点都有一个前驱,这个树就成为有根树.  对于两个树T1和T ...

  6. [树hash]BZOJ 4337——BJOI2015 树的同构

    题目梗概 对于两个树T1和T2,如果能够把树T1的所有点重新标号,使得树T1和树T2完全相 同,那么这两个树是同构的. 有M个有根树,请你把它们按同构关系分成若干个等价类. 解题思路 第一次写树has ...

  7. 面试必会系列 - 2.1 MySQL知识点大汇总(基本架构,存储引擎,锁,事务,索引,B+树等等)

    本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...

  8. 十二、一篇文章帮助你快速读懂MySQL索引(B树、B+树详解)

    2. 索引 2.1 索引概述 MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序).在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某 ...

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

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

最新文章

  1. idea springmvc_SSM三大框架使用Maven快速搭建整合(SpringMVC+Spring+Mybatis)
  2. lnmp shell安装脚本
  3. 浅析TCP之SACK(选择性确认)
  4. 兄弟,敬你是条汉子,请干了广告们~
  5. 创维37K05HR黑屏有声音故障维修
  6. 安装软件要求输入服务器配置信息,信息技术考试软件配置安装与操作规范(管理服务端与客户端)(30页)-原创力文档...
  7. eclipse lombok 标红_无法使Lombok项目在Eclipse上运行
  8. 送书|science-组合图表绘制
  9. clobzh字符串缓冲区太小的解决方法_用4K屏玩LOL英雄联盟游戏指针太小解决方法已找到...
  10. python基础知识 01
  11. iOS YYKit学习之YYText的使用
  12. 无线5G CPE与AP
  13. 关于通过邮箱找回密码的实现
  14. promise跟ajax区别,Promise和AJAX有什么区别?
  15. XGBoost资料( 多届竞赛冠军获得者 周耀 整理)
  16. Blender带凹凸质感的渐变玻璃材质
  17. Cypress之模拟键盘鼠标操作以及页面元素拖动操作
  18. 看表情读情绪:AI“察言观色”背后的表情识别数据
  19. HarmonyOS实现点亮LED
  20. CWebBrowser 中处理回车相应的问题

热门文章

  1. 前端Q面试类文章整理(文末送现金红包等礼品)
  2. 最小生成树实验报告c语言,c语言最小生成树的实现
  3. 虚拟现实技术在神经外科教学中的应用
  4. numpy中np.array()功能
  5. 【利用cmd命令 ping 局域网内所有IP】
  6. 解决微软surface pro在某些情况下wifi转输速度过慢的问题 - z
  7. Android手机铃声代码实现
  8. SEMI-SUPERVISED KNOWLEDGE TRANSFERFOR DEEP LEARNING FROM PRIVATE TRAINING DATA(PATE)论文笔记
  9. (20230402) ALE流固耦合lsdyna界面个人操作记录 1500
  10. php中while的用法,PHP丨PHP基础知识之流程控制WHILE循环「理论篇」