图解MySQL索引:B-树、B+树,终于搞清楚了( 二 )


本文插图

图解MySQL索引:B-树、B+树,终于搞清楚了
本文插图
三、问题
问:为什么索引结构默认使用B-Tree , 而不是hash , 二叉树 , 红黑树?
hash:虽然可以快速定位 , 但是没有顺序 , IO复杂度高 。 二叉树:树的高度不均匀 , 不能自平衡 , 查找效率跟数据有关(树的高度) , 并且IO代价高 。
红黑树:树的高度随着数据量增加而增加 , IO代价高 。
问:为什么官方建议使用自增长主键作为索引 。
结合B+Tree的特点 , 自增主键是连续的 , 在插入过程中尽量减少页分裂 , 即使要进行页分裂 , 也只会分裂很少一部分 。 并且能减少数据的移动 , 每次插入都是插入到最后 。
总之就是减少分裂和移动的频率 。
插入连续的数据:
图解MySQL索引:B-树、B+树,终于搞清楚了
本文插图

插入非连续的数据
图解MySQL索引:B-树、B+树,终于搞清楚了
本文插图

来源:www.cnblogs.com/liqiangchn/p/9060521.html


推荐阅读