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+树?的主要内容,如果未能解决你的问题,请参考以下文章