提到索引自然是有四种主流索引,分别是: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这个范围,所以这个数据块会分裂开,中间的会分裂成父节点。如下所示:这正好验证若根节点不是叶子节点,则至少有两个孩子的特性
父节点也满足1个key和2个指针,分别指向左,右两个数据块。继续插入E,K,Q,不发生变化:

本文主要探讨BTREE索引,它是数据库中常见的索引类型之一。内容包括BTree的基本概念、特性以及通过实例展示其分裂过程,帮助理解其工作原理。
最低0.47元/天 解锁文章
1917

被折叠的 条评论
为什么被折叠?



