数据库里的BTREE索引

提到索引自然是有四种主流索引,分别是:BTREE,HASH,R-TREE,Full-Text,不同的引擎支持不同的索引,这里主要理解BTREE索引。

BTree又叫多路平衡搜索树,一颗m叉的BTree特性如下:

树中每个节点最多包含m个孩子。

除根节点与叶子节点外,每个节点至少有[ceil(m/2)]个孩子。

若根节点不是叶子节点,则至少有两个孩子。

所有的叶子节点都在同一层。

每个非叶子节点由n个key与n+1个指针组成,其中[ceil(m/2)-1]<=n <= m-1

先来看m=5的一个5叉BTree:插入如下所有字母C N G A H E K Q M F W L T Z D P R X Y S , 分析一下,当前已经有4个key和5个指针组成,满足最后一条特性,当我们再插入H时,已经不满足[ceil(m/2)-1]<=n <= m-1这个范围,所以这个数据块会分裂开,中间的会分裂成父节点。如下所示:这正好验证若根节点不是叶子节点,则至少有两个孩子的特性

Back to top: