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