Mysql的索引

1.索引

索引存在的意义主要是为了提高查询的效率,参考一本书,书有目录这样想找自己想要的内容翻看目录就快了许多,没有目录就需要一页一页的找.

索引的代价

有了索引虽然提高了查询的效率但是降低了增删改的效率,一本书每次修改内容就需要修改目录这就变得很麻烦.并且索引也消耗了更多的空间.

~~在插入新的数据的时候,既要改变硬盘上新的数据,又要调整索引.

但是引入索引是值得的在实际的开发过程中,查的使用次数,要远远大于增删改的次数.

索引背后的数据结构

它背后的数据结构是B+树

了解B+树之前我们先了解一下B树

B树是一个N叉搜索树

B树中的值是不会重复出现的

每个节点上可能存在N-1个值,也可能会更少,N-1个值,就把区间划成了N份

这样就使树的高度降低了在进行数据的查找时候IO次数就减少了 

 

B+树

1.一个节点可以存N个key,N个key划分出N个区间(而不是N+1个区间)

2.每个节点的key都会在子节点中出现,并且是每个子节点的最大值

3.B+树的叶子节点会首尾相接,相当于一个链表

这个时候非常方便范围查找

4.正是因为叶子节点,是完整的数据集合,只在叶子节点中储存数据表中的每一行数据,只需在非叶子节点中存储key值即可.减少了内存开支,非叶子节点也可能在缓存中,进一步减少了IO次数.

从图可以看出B+树的叶子节点包含整个树中所有的数据.

B+树的优势

1.每个节点都存更多的key值,树的高度降低了,访问IO次数减少了

2.所有查询结果都会落在叶子节点上,所以访问每个数据的IO次数都相同.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值