mysql数据库二叉树
假如Mysql的索引结构是二叉树的数据结构,比较理想的结构如下:
如果主键是顺序插入的,则会形成一个单向链表,结构如下:
所以,如果选择二叉树作为索引结构,会存在以下缺点:
顺序插入时会形成一个链表,查询性能大大降低。
大数据情况下,层级较深,检索速度慢(二叉树由于一个节点下最多只能包含两个子节点)。
此时可以通过红黑树来解决二叉树平衡的问题,红黑树是一颗自平衡二叉树,那这样即使是顺序插入数据,最终形成的数据结构也是一颗平衡的二叉树。结构如下:
但是,即使如此,由于红黑树也是一颗二叉树,所以也会存在一个缺点:
大数据量情况下,层级较深,检索速度慢。
所以在Mysql的索引结构中,并没有选择二叉树或者红黑树,而选择的是B+Tree树。