mysql为什么选b+tree索引

文章探讨了不同类型的索引数据结构,包括理想状态下的二叉查找树、红黑树、哈希表以及B-Tree和B+Tree。二叉树在特定插入顺序下可能形成链表效率低效。红黑树能平衡但高度不可控。哈希表快速定位但不支持范围查询。B-Tree和B+Tree中,B+Tree因只在叶子节点存储数据,降低了树高,减少IO操作,更适合MySQL作为索引结构。
摘要由CSDN通过智能技术生成

索引数据结构

  • 二叉树
  • 红黑树
  • hash表
  • B-Tree
  • B+Tree

二叉树

 

 如图,图一比较理想状态下的二叉查找树,数据插入顺序是4261357,图二插入顺序是1234567,假如这一列作为主键索引,id自增顺序插入,那么就会生成这种类似链表的树形结构,如果我们要查找6这个数,用了索引和不用索引全盘查找没有区别,单边增长的数据链如果用二叉树查找对效率没有什么帮助,所以MySQL不用二叉树作为索引结构。(画二叉树可以去这个网址,很方便)Binary Search Tree Visualization)https://www.cs.usfca.edu/~galles/visualization/BST.html

 红黑树

对于单边增长的比较连续的数据,红黑树是可以挪动节点来均衡的,但是在数据量大的情况下高度不可控,io次数依然很多

hash

 对索引的key进行一次hash运算就可以定位到数据位置,但是不支持范围查找

b-tree

b-tree相对红黑树树的高度减少,io次数减少

b+tree

 不过MySQL没有选用b-tree做索引,而是选择b+tree,因为b-tree非叶子节点也有存储数据,而b+tree只在叶子节点存数据,非叶子节点存索引值和指针,这样在相同数据量情况下,选用b+tree的树高度会低于b-tree,可以减少io次数 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值