MySql索引的底层数据结构

mysql默认的存储引擎innodb采用的是B+树来存储索引。

那么为什么采用b+树而不采用二叉树,红黑树或者b树呢?

        如果采用二叉树的话,比如采用二叉搜索树,如果这个树是相对平衡的话,那么这个查找的时间复杂度是O(logn),如果数据是有序的,那么这个二叉搜索树就会退化成链表,查找的时间复杂度为O(n),查找速率太慢,也就是说使用二叉搜索树这个查找的效率不稳定。

        如果使用红黑树的话,数据规模比较小,就可以避免不平衡的问题,但是如果数据规模过于庞大,那么这个红黑树的深度就会很深,查找的效率也会变慢。

        如果采用b树的话,因为b树的非叶子节点和叶子节点都会存放数据,那么查找一个数据的时候,会从根节点向下查找,其他数据也会被读取出来,这样磁盘的读写代价比较高,而b+树的只在叶子节点存放数据,非叶子节点存放指针,查找数据的话,这个磁盘的读写代价比较低。还有就是b+树的叶子节点之间通过双向指针进行维护,进行范围查询的话效率比较高。

综上来看,使用b+树存储索引最优。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值