MySQL索引背后的数据结构及算法原理

1、索引的本质

索引:数据结构
查询算法(顺序查找、二分查找、二叉查找树等),不同的查询算法适用于不同的数据结构;

2、b tree和b+tree

B+树内节点不存储数据,所有 data 存储在叶节点导致查询时间复杂度固定为 log n。
B-树查询时间复杂度不固定,与 key 在树中的位置有关,最好为O(1)

3、为什么使用b tree和b+tree作为索引

B-/+Tree作为索引的理论基础;
索引文件存储在内存和磁盘上==》索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数;

主存存取原理;
磁盘存取原理;
局部性原理和磁盘预读;

4、mysql索引性能分析

不同存储引擎对索引的实现方式是不同的;
MyISAM存储引擎:

  • B+Tree作为索引结构;
  • 非聚集索引
  • 索引文件和数据文件是分离
  • 主索引和辅助索引(Secondary key)在结构上没有任何区别
  • 索引文件中的叶节点的data域存放的是数据记录的地址

InnoDB存储引擎:

  • B+Tree作为索引结构
  • InnoDB的数据文件本身就是索引文件
  • 主索引文件中的叶节点data域保存了完整的数据记录
  • 辅助索引data域存储相应记录主键的值而不是地址

mongodb使用b tree;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值