一、简介

mysql索引的数据结构是树,常用的存储引擎innodb采用的是B+Tree。这里对B+Tree及其相关的

查找树进行简要介绍。

二、各种查找树

1、二叉排序树(也称为二叉查找树)

二叉排序树是最简单的查找树,特点:

a)是一棵二叉树;

b)左子树所有结点的值小于它的父结点的值,右子树所有结点的值大于它的父结点的值。

2、平衡二叉树(又称AVL树)

平衡二叉树是二叉排序树的基础上,对树的深度进行了限制,从而减少了查找比较的次数,

特点:

a)是一棵二叉树;

b)左子树所有结点的值小于它的父结点的值,右子树所有结点的值大于它的父结点的值;

c)左子树与右子树的深度差在-1、0、1内,否则对子树进行旋转调整。

3、B-树(B-Tree)

B-树是多路平衡查找树,相对于平衡二叉树,对父结点的直接子结点个数,不再仅限于2,

可以指定m(自定义),这样可以在树的深度不大量增加的前提下,保存更多的结点。

B-树是通常在文件系统中使用。

特点:

a)树的每个结点最多有m(自定义)子结点;

b)若根结点不是叶子结点,则至少有两个子结点;

c) 除根结点外的所有非叶子结点,至少有m/2上取整个子结点;

d)父结点下的最左边子树所有结点的值均小于父结点最小值,

最右边子树所有结点的值均大于父结点最大值,

其余中间子树所有结点的值则介于指针的父结点两边的值;

e)所有叶子结点都在同一层;

注意:所有结点均带有值

4、B+树(B+Tree)

B+树是B-树变体,相对于B-树,叶子结点的值包含了所有的值,所有父结点的值是重复了叶子结点的值,

父结点只起索引查找的作用,同时所叶子结点也也构成了一条有序的链表。

mysql中存储引擎为innodb的索引,采用的数据结构即是B+树。

特点:

a)有m个子结点的父结点就有m个关键字;

b)所有叶子结点包含了所有关键字(值),且构成由小到大的有序链表;

c) 所有非叶子结点起索引作用,结点仅包含子树所有结点的最大值;

d)所有叶子结点都在同一层;

注意:叶子结点包含了所有的关键字(值)。

5、B*树(B*Tree)

B*树是B+树的变体,相对B+树,增加了对同一层非叶子结点的指针,即同一层非叶子结点也构成了一条链表。

三、总结

综上,上述各种查找树是相互关联的。

归结到mysql中innodb索引,采用的是B+树,如聚簇索引,是通过主键来聚集数据,采用B+树实现,

这即是一种索引,也是mysql的一种数据存储结构,叶子结点包含了所有的数据,非叶子结点仅起索引作用(若

没有定义主键,则innodb会隐式定义一个主键来作为聚簇索引)。

更多MySQL的相关技术文章,请访问MySQL教程栏目进行学习!

mysql的索引是什么数据结构_mysql索引的数据结构是什么相关推荐

  1. mysql是如何管理数据结构_MySQL索引背后的数据结构和原理

    这是我看到的一篇博客,讲得非常详细,分享给大家:http://blog.codinglabs.org/articles/theory-of-mysql-index.html Abstract: 本文以 ...

  2. mysql匹配数据结构_MySQL索引背后的数据结构及原理

    前两天经历了武汉一行腾讯面试,数据库索引是一个面试热点,在此搜集相关资料,以备学习之用. 下面是一位牛人写得关于数据库索引的精品之作,因为很好,不敢修饰,转载至此与博友共享. 本文以MySQL数据库为 ...

  3. mysql索引背后的数据结构_MySQL索引背后的数据结构及算法原理

    摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎 对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如B ...

  4. mysql索引4种结构_mysql索引:四种类型,两种方法

    1. 普通索引:最基本的索引,它没有任何限制,用于加速查询. 2. 唯一索引unique:索引列的值必须唯一,但允许有空值.如果是组合索引,则列值的组合必须唯一. 3. 主键索引: 是一种特殊的唯一索 ...

  5. mysql listagg函数 长度过长_MySQL索引是什么?怎么做?

    首先,MySql 支持多种存储引擎,最为常用的是 innodb,MyIsam 也需要了解,其他的存储引擎包括 Archive 等等都要有个印象. 各种存储引擎对于索引的支持也不相同,总结下来,MySq ...

  6. mysql索引linke和等于_MySQL索引介绍和实战

    索引是什么 mysql官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构. 可以得到索引的本质:索引是数据结构,索引的目的是提高查询效率,可以类比英语新华字典,根据目录定位词 ...

  7. mysql索引是什么 优点和缺点_MySQL索引优缺点、使用原则及种类介绍

    一.索引简介 1.索引简介 索引(Index)是帮助MySQL高效获取数据的数据结构. 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的.MyISAM和InnoDB存储 ...

  8. mysql索引查2遍_mysql索引优化查询

    一:mysql的引擎简介. 1.ISAM:查找速度快,不支持事物,如果硬盘崩溃则无法恢复. 2.MyISAM:是ISAM的扩展,在web中用的很多,读取速度快,,不支持事物. 3.InnoDB:Inn ...

  9. mysql索引红黑联盟_MySQL索引

    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 可以把索引看作是汉语字典的目录页,我们可以按拼音.笔画.偏旁部首等排序的目录(索引)快速查找到需要的字. ...

  10. mysql索引分析和优化_MySQL索引分析和优化

    什么是索引? 索 引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的 所有记录,直至找到符合要求的记录.表 ...

最新文章

  1. 【C 语言】字符串模型 ( strstr-do…while 模型 )
  2. JDBC批量操作批量增加批量修改
  3. 并查集 poj1182
  4. 解决vscode安装后无法启动的问题
  5. 从源码深处体验Spring核心技术--IOC容器初体验
  6. Jest DoneCallback 数据类型的理解
  7. Bginfo软件在域的部署和应用
  8. php自带count 函数,深入理解PHP 数组之count 函数
  9. 化学人学python有前途吗-Java之父点赞的开源Java深度学习框架,你不学下吗?
  10. 激光打标机二次开发C#实例分享(附带实例源码)
  11. 计算机系统结构:指令的动态调度-Tomasulo算法
  12. 一个程序员应该怎样去学习和掌握计算机英语
  13. windows下编译chromium浏览器的方法
  14. UE4中Pak文件的读取规则
  15. AutoCAD2012从入门到精通中文视频教程 第21课 偏移与镜像(个人收藏)
  16. 计算机组成课设怎么做,计算机组成原理课设1
  17. RPG 类型游戏开发基础教程
  18. Scrum的三个工件(产品Backlog、Sprint Backlog、产品增量 )
  19. 《循序渐进DB2(第2版)——DBA系统管理、运维与应用案例》书评之“搜千遍,找万遍,不如手持一本万能剑”...
  20. win10引导Ubuntu开机的注意事项

热门文章

  1. 二、安装配置java和hadoop程序
  2. html颜色设计,网页设计中经典色彩搭配方案
  3. C#华氏度转换成摄氏度的代码QVQ
  4. ppt编辑数据链接文件不可用_excel表格编辑数据不可用-ppt插入的自带图表点击编辑数据时显示链接文件不可用...
  5. 人工智能数学基础---定积分3:微积分基本公式(牛顿-莱布尼茨公式)
  6. 用PS合并RGB图片和只有透明通道的图片
  7. python 图片(pil库)将两个图片合成一张
  8. 三角函数和角与差角公式的图形解释
  9. 【hadoop学习项目】10. 使用多级MR找出两两用户之间的共同好友
  10. 论MongoDB索引选择的重要性