MySQL使用自增主键,如果使用二叉树作为索引数据结构,自增时二叉树会像链表一样单边增长;红黑树虽然会旋转平衡,但也是一边的增长,树的高度大。
二叉树
红黑树
MySQL最终选择B+树作为索引数据结构,B树虽是多路平衡树,但叶子节点之间没有联系;B+树是多路平衡树,一个节点可以存储更多的数据,数据记录都存放在叶子节点中,这样非叶子节点就可以存储更多索引,所有叶子节点之间还有一个链指针。
B树
Max. Degree = 4
B+树(全表扫描,范围查找)
Max. Degree = 4