B树和B+树笔记
数据库会为每个索引构建一个B+树结构,包括聚簇索引(默认为主键)和非聚簇索引,聚簇索引的树结构上的叶子结点记录的数据是该索引对应的整条记录值,非聚簇索引的树结构上的叶子结点记录的数据是聚簇索引的值和对应字段的值,需要去聚簇索引的树结构中进行回表查询数据。
B树和B+树都属于多叉平衡查找树,使得查询时间复杂度为O(logN)。
B树:
树结点:记录——关键字(数据库中的索引),关键字对应记录的指针,子节点的指针。
关键字:数据库中的索引,每个树结点记录的关键字个数大于1小于树的M。
关键字对应记录的指针:根据该指针数据库可以直接查询到该索引对应的数据库记录。
子节点的指针:根据该指针查询子节点,子节点的关键字大小位于父节点某两个关键字的中间。
B+树:
非叶子树结点:记录——关键字(数据库中的索引),子节点的指针,不记录关键字对应的数据。
叶子结点:记录——关键字(数据库中的索引),关键字对应的数据(聚簇索引:该索引对应的记录的指针;非聚簇索引:该索引对应的聚簇索引,并通过回表查询该聚簇索引对应的数据)
关键字:数据库中的索引,每个树结点记录的关键字个数大于1小于树的M。
子节点的指针:根据该指针查询子节点,子节点的关键字大小位于父节点某两个关键字的中间。
B树的优点:B树查询数据时,如果查询的数据离根节点很近,且树结点中记录了对应记录的指针,因此可以较为快速的获取该条数据,不用遍历到叶子结点。
B+树的优点:1.非叶子结点不记录索引对应的记录的指针,因此可以用更多空间用于存放索引记录,降低了树的高度,可以快速的进行查询。
2.所有关键字的数据都记录在叶子结点,因此查询速度稳定(都需要遍历到叶子)。
3.全结点遍历更快速,遍历叶子链表而不是遍历树。
浙公网安备 33010602011771号