为什么InnoDB选择了B+Tree树结构
首先,相对于二叉树存储同样的数据层级更少,搜索效率更高,假设恰好存储的是一组单向顺序插入的链表数据时,其层级是逐级递增的,很明显插入和查询性能都降低;
其次,B树虽然利用了向上分裂的数据结构算法规则,在一定程度上优化了存储性能,但其每个节点除了存放键值和地址外,还会存放当前节点的数据,这样相当于页上的存放数据的空间减少了,
在同等情况下,存入相同的数据量,B树还需扩增层级才能达到效果,降低了插入和查询的性能。而B+树采用的是将非叶子节点存放指向具体数据的索引,叶子节点存放所有具体的数据,且叶子节点之间形成一个双向链表,
这样就提高了区间访问性能,并且利于排序和查询。
最后,对于Hash索引,B+树索引是支持范围匹配和排序的。