B+树做索引的优点
- 树的高度更矮、更胖,磁盘I/O次数极少:B+树的所有数据都存储在叶子节点,非叶子节点只存储索引键值和指向子节点的指针,MySQL每次查找数据最多只需进行3到4次磁盘I/O。
- 叶子节点是双向链表:如果是范围查询,比如查询id在10到20的数据,据库只需先快速定位到
10的位置,然后顺着链表找数据就可以。 - 查询性能极其稳定:在B+树中,所有真实的数据记录都存放在同一层(叶子节点),且叶子节点之间的距离相等。B+树的查询时间复杂度严格锁定为 O(log n),不会出现“运气好查得快,运气差查得慢”。
