1. 为什么InnoDB存储引擎选择B+Tree索引结构。
(1) 思路,为什么不采用二叉树和红黑树 ?
普通二叉树,顺序插入,形成链表,大大影响查询效率。红黑树本质上也是二叉树,大数据量,树的层级深,影响查询效率。
相对于二叉树,层级更少,搜索效率更高。
(2)思路,为什么不是用B-Tree树?
对于B-Tree,无论叶子节点还是非叶子节点,都存放数据。这就导致一个页中保存的节点变少,指针也跟着变少(指针个数和树的阶数是相同的),要同样保存大量数据,只能增加树的高度,降低查询效率。
(3)思路,B+Tree索引的优势
所有的数据都存放叶子节点,查询数据都要在叶子节点中找,查询效率稳定。
叶子节点形成的双向链表,便于范围查询和排序,而Hash索引是不支持范围查询和排序的。