MySql索引为什么使用B+树

前言


面试中我们经常碰到面试官问到数据库索引,问到索引就会问你索引的数据结构。类似这种数据结构对于普通程序员来说记住概念几天就忘了,而且概念不是每个人都能很好都理解,所以针对这一原因,我简单通俗都像大家讲解为什么mysql使用都是B+树,而不用其他的树形结构。

正文


Q1:B+树的查询时间大概多少?

A:跟树的高度有关,是O(log n)。

Q2:hash查找时间大概多少?

A:o(1)。

Q3:hash比B+查找时间更短,为什么索引不用hash?

A:这和业务场景有关,如果只查找一个值的话,hash是一个很好的选择,单数据库经常会选择多条,这时候由于B+树索引有序,并且又有链表相连,它的查询效率比hash就快很多了。而且数据库中的索引一般是在磁盘上,数据量大的情况可能无法一次装入内存,B+树的设计可以允许数据分批加载,同时树的高度较低,提高查找效率。
 

二叉排序树、红黑树、B树、B+树

二叉排序树

同一高度下左边跟节点小,右边跟节点大,并且左右子树都是二叉排序的。但是在极端情况下插入的是有序的序列就会变成链表。

所以这时候我们就要对二叉树进行平衡,让插入的时候节点能均匀分布。

红黑树

猜你喜欢

转载自blog.csdn.net/qq_34820803/article/details/117253783