mysql索引的数据结构,为什么用b+树

谈到索引,大家并不陌生。索引本身是一种数据结构,存在的目的主要是为了缩短数据检索的时间,最大程度减少磁盘 IO。任何有数据的场景几乎都有索引,比如手机通讯录、文件系统(ext4\xfsfs)、数据库系统(MySQL\Oracle)。数据库系统和文件系统一般都采用 B+ 树来存储索引信息,B+ 树兼顾写和读的性能...
mysql索引的数据结构,为什么用b+树
谈到索引,大家并不陌生。索引本身是一种数据结构,存在的目的主要是为了缩短数据检索的时间,最大程度减少磁盘 IO。
任何有数据的场景几乎都有索引,比如手机通讯录、文件系统(ext4\xfs\ntfs)、数据库系统(MySQL\Oracle)。数据库系统和文件系统一般都采用 B+ 树来存储索引信息,B+ 树兼顾写和读的性能,最极端时检索复杂度为 O(logN),其中 N 指的是节点数量,logN 表示对磁盘 IO 扫描的总次数。
MySQL 支持的索引结构有四种:B+ 树,R 树,HASH,FULLTEXT。
B 树是一种多叉的 AVL 树。B-Tree 减少了 AVL 数的高度,增加了每个节点的 KEY 数量。
B 树的特性:(m 为阶数:结点的孩子个数最大值)
1. 树中每个节点最多含有 m 个孩子节点 (m>=2);
2. 除根节点和叶子结点外,其他节点的孩子数量 >=ceil(m / 2);
3. 若根节点不是叶子结点,最少有两个孩子
特殊情况:没有孩子的根结点,即根结点为叶子结点,整棵树只有一个根节点;
4. 每个非叶子结点中包含有 n 个关键字信息:(n,P0,K1,P1,K2,P2,......,Kn,Pn) 其中:
Ki (i=1...n) 为关键字,且关键字按顺序升序排序 K(i-1)< Ki
Pi 为指向儿子节点的指针,且指针 P(i-1) 指向的儿子节点里所有关键字均小于 Ki,但都大于 K(i-1)
关键字的个数 n 必须满足:[ceil(m / 2)-1]<= n <= m-1
如果一个结点有 n 个关键字,那么该结点有 n+1 个分支。这 n+1 个关键字按照递增顺序排列
所有叶子结点都出现在同一层,是所有遍历的终点位置
2021-01-21
mysql索引的数据结构,为什么用b+树
先从数据结构的角度来答。
题主应该知道B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域。
这就决定了B+树更适合用来存储外部数据,也就是所谓的磁盘数据。2019-06-29
mengvlog 阅读 13 次 更新于 2025-07-21 04:19:02 我来答关注问题0
  •  昵儿亲 mysql索引的数据结构,为什么用b+树

    B+ 树是对 B 树的一个小升级。大部分数据库的索引都是基于 B+ 树存储的。MySQL 的 MyISAM 和 InnoDB 引擎的索引都是基于 B+ 树存储。B+ 树最大的几个特点:1. 非叶子节点只保留 KEY,放弃 DATA;2. KEY 和 DATA一起,在叶子节点,并且保存为一个有序链表(正序,反序,或者双向);3....

  • MySQL的索引文件是数据库中用于加速数据检索的数据结构。以下是关于MySQL索引文件的详细解释:1. 提高查询效率:索引文件允许数据库快速定位到表中的特定行,避免了扫描整个表的过程,从而显著提高了查询性能。2. 数据结构:MySQL主要使用B-Tree和B-Tree变体(如B+Tree)作为索引的数据结构。此外,还有专门...

  • 谈到索引,大家并不陌生。索引本身是一种数据结构,存在的目的主要是为了缩短数据检索的时间,最大程度减少磁盘 IO。任何有数据的场景几乎都有索引,比如手机通讯录、文件系统(ext4\xfsfs)、数据库系统(MySQL\Oracle)。数据库系统和文件系统一般都采用 B+ 树来存储索引信息,B+ 树兼顾写和读的性能...

  •  文暄生活科普 MySQL索引的底层数据结构原理剖析(二叉树、 红黑树、Hash、B-Tree、B+Tree)

    那么B-Tree是满足下列条件的数据结构:d 为大于1的一个正整数,称为BTree的度;h为一个正整数,称为BTree的高度;key和指针互相间隔,节点两端是指针;叶子节点具有相同的深度,叶子节点的指针为空,节点中数据索引从左往右递增排列。(2). B+Tree索引特点:B+Tree是在B-Tree基础上的一种优化,使其...

  • 索引的作用:索引是MySQL中一种特殊的数据库结构,用于快速查询数据表中具有特定值的记录。通过索引,MySQL可以无需逐行读取数据,从而提高查询效率。索引的数据结构:二叉树:每个节点最多有两个子节点,但在最坏情况下的时间复杂度可能为O,效率较低。平衡二叉树:通过旋转操作保持树的平衡,但在删除操作...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部