MySQL索引原理——为什么要用B+树
- 本质就是B+树,叶子节点为主键和数据,把非叶子节点的数据都在叶子节点冗余一份,非叶子节点只需要存储与搜索有关的key值和下一页地址,将其他数据都移除。
- 由于非叶子节点不用存真实数据,只有“key和下一页地址”,所以可以放更多这种数据,可以连接更多的子节点,树高度就下来了。
通常一个16kb的页,可以存储三四百个由“key和下一页地址”构成的行,即使两千万的数据量,log以400为底两千万的对数,只需要3层。 - 因为底层的叶子节点是有序的,只需要把叶子节点链接起来,就可以方便读取一个范围内的数据!也可以进行全数据遍历!
B+树叶子节点的链表,是双向链表哈(图中有错误)