Mysql索性为什么要用B+Tree当索引

数据库使用索引提高查询效率,B+Tree作为索引数据结构的原因在于其较低的高度和叶子节点间的链接,减少了磁盘IO次数。B+Tree非叶子节点仅存储索引,叶子节点包含所有键值,且相邻节点间有指针,利于数据预读。
摘要由CSDN通过智能技术生成

数据库为什么需要索引呢?

我们都是知道数据库的数据都是存储在磁盘上的,当我们程序启动起来的时候,就相当于一个进程运行在了机器的内存当中。所以当我们程序要查询数据时,必须要从内存出来到磁盘里面去查找数据,然后将数据写回到内存当中。但是磁盘的io效率是远不如内存的,所有查找数据的快慢直接影响程序运行的效率。

而数据库加索引的主要目的就是为了使用一种合适的数据结构,可以使得查询数据的效率变高,减少磁盘io的次数,提升数据查找的速率,而不再是愣头青式的全局遍历。

那索引为啥要用B+Tree的数据结构呢?

如果我们简单地想的话,想要快速地查找到数据,感觉hash表是最快的,根据key,hash到某个槽位上,直接一次查找就可以准确的找到数据的位置,这多快呀。但是我们在做业务时,往往只需要一条的数据需求很少,大部分的需求都是根据一定的条件查询一部分的数据,这个时候hash显示不是很合适。

我们再考虑树,比如二叉树,平衡二叉树,红黑树,B树等,他们都是二分查找,找数也快,但是不管是平衡二叉树还是优化后的红黑树,说到底他们都是二叉树,当节点多了的时候,它们的高度就会高呀,我找一个数据。根节点不是,那就找下一层,下一层还没有我就再去找下一层,这样造成的后果就是我找一个数据可能要找好几次,而每一次都是执行了一次磁盘的io,而我们的索引的目的就是要减少磁盘io呀,这样设计可不行。那我们是不是把高度变矮就可以了呢?

所以我们再考虑下B树。首先简单介绍下B树的数据结构:

首先看看B树的定义。

  • 每个节点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值