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