为什么使用 b+ tree 存储索引?
二叉树的高度太高,红黑树比二叉树好,但高度也不可控,b+ tree 的高度是恒定的。
可以到 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 上查看不同数据结构的效果。
而且b+ tree 只在叶子节点中存储数据,叶子节点间也是顺序链接的,索引做范围查找时非常高效。
聚集索引 以主键为索引来组织数据的方式。
为什么要用自增ID做主键?
插入层面:
在逻辑的数据结构上,自增ID插入时始终是在树的最后,否则插入时是没有规律的,树的裂变会更加复杂,而且比较成本比数字更高。
在物理存储上,自增ID可以使page空间连续申请,没有碎片,否则,申请空间时会产生碎片,而且在树的分裂后物理数据需要移动,影响效率,也会产生碎片。建立副索引时,叶子节点存储非自增ID的数据时空间成本也更高。
查询层面:
自增ID方式寻址更快,例如UUID的查找比较肯定弱于自增数字。
业务层面:可以隐藏业务数据。
网友评论