b树
将一列数据按从小到大排序,将其切两刀分成三份。第一次从三分之一处取值,第二次从三分之二处取值,完成第一层的树枝和第二层的叶。(在0,和三分之三处取值,只会分出个寂寞出来)
要划分第二层的叶继续往下延伸,再次将每个叶分成三份,从三分之一处和三分之二处取值作为枝节点即可。
b树的每个节点都存储了数据的地址,查询的深度不固定。在第二层匹配到索引,则在第二层获取数据地址结束查询。
b+树只有叶节点存储了数据的地址,查询的深度固定为树的高度。在第二层匹配到索引,也要走到最后一层叶节点才能获取数据地址。
增加每一层的节点数量,降低树的高度,可以提高整体的查询速度,只是会降低上层数据的查询速度。
b+树就是通过减少上层节点存储的数据量,增加每一层的节点容量,从而提高查询效率,但可能会造成叶节点存储的数据地址冗余,增加索引消耗的存储空间。
(在b+树中上层节点对应的数据地址,可以采用如下方式保存:依次往下一层的最左侧传递。
这样在每层两个节点的三层b+树中,第三层第一个节点存储三个数据地址,第三层第二个节点存储两个数据地址,第三层第三个节点存储两个数据地址,第三层第四个节点存储一个数据地址)
浙公网安备 33010602011771号