数据库索引

索引的本质:索引是帮助MySQL高效获取数据的排好序的数据结构

索引存储在文件里

索引结构通常有:二叉树、红黑树、HASH、BTREE

以下是在数据量在百万的前提下

二叉树的极端状况:1,2,3,4,5,6,7 ·····像这样有顺序的会查找非常慢。
红黑树的极端状况:(JDK1.8之后hashMap的底层的链表使用了红黑树)但是跟二叉树的极端情况差不多,只不过层数会少些,因为红黑树可以自动平衡。
HASH:不可以区间查询。

索引底层数据结构与算法

B-Tree(多插平衡树):在红黑树的基础上(也满足二叉树原则),增加叶子节点存储索引的个数。它的宽度是有限的,每一次查询就会跟磁盘做一次IO操作,把数据暴露给内存,内存的查询还是很快的(可以忽略)。
B+Tree:Mysql底层用的数据结构是B+Tree(B-Tree的变种)
B+Tree在B-Tree上做了升级,非叶子节点只存储了索引,在叶子节点上添加了索引冗余,并实现聚集索引。非叶子节点默认可以存储16k数据,一个索引(8B)+索引的指针(6B)=14B,也就是说一个非叶子节点可以存储1170个索引+索引的指针。层级为三级的的话,可以存储两千多万条数据,1170 * 1170 * 16(每条的索引数据假设1K)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值