MySQL-索引为什么是B+树?

Posted 滑稽404#

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL-索引为什么是B+树?相关的知识,希望对你有一定的参考价值。

数据库索引,必须满足查询快,且排序的特性

首先来看一下,常常用来索引的数据结构

1、Hash

Hash索引通过Hash算法建立hash表,任何的数据算出hash值后,都能够通过近似O(1)的效率查询到结果
Hash两种常见算法:

  • 拉链法
  • 开放地址法

但是因为hash是无序的,根本满足不了数据库排序以及范围查询

2、数组

数组不仅能够对数据进行排序,而且索引查询效率高,遍历全表也可以通过二分查询

但是为什么不能当作数据库索引呢,因为修改操作会导致大量的数据挪移,这应该都能理解

3、二叉树

有人又想到了二叉树,树不仅能够排序而且查询效率高

但是普通的树有个通病,容易出现左右子树不平衡,左右查询效率相差过大

4、红黑树

于是想到了面试常客红黑树,红黑树作为经典平衡树,不仅满足树的特性,而且解决了不平衡的特点

但是因为他是二叉树,数据一多,树的高度离谱,io读取(索引文件)消耗的时间就长,耽误效率
io读取和内存查询的速度相差太多

5、B+树

B+树是一个平衡多路搜索树
不仅解决了平衡,而且多子树限制了树的高度,亿级的数据也就最多三层,io效率大大提高

以上是关于MySQL-索引为什么是B+树?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL—— 数据库索引 (索引是什么?B树,B+树)

Mysql索引为什么用B+树而不用B-树

mysql索引为什么用B+树而不用B树

mysql索引为什么用B+树而不用B树

MySQL索引学习

MySQL索引学习