mysql uid是什么_京东面试官:说说你对MySQL索引的理解?

作者:小小木的博客 来源:https://www.cnblogs.com/wyc1994666/p/10831039.html

哈喽,各位新来的小伙伴们,大家好!由于公众号做了改版,为了保证公众号的资源能准时推送到你手里,大家记得将咱们的公众号 加星标置顶 ,在此真诚的表示感谢~

正文如下:

开门见山,直接上图,下面的思维导图即是现在要讲的内容,可以先有个印象~

06303cdc6a1fbf29ef77e83555231628.png

常见索引类型(实现层面)

索引种类(应用层面)

聚簇索引与非聚簇索引

覆盖索引

最佳索引使用策略

1.常见索引类型(实现层面)

首先不谈Mysql怎么实现索引的,先马后炮一下,如果让我们来设计数据库的索引,该怎么设计?

我们首先思考一下索引到底想达到什么效果?其实就是想能够实现快速查找数据的策略,所以索引的实现本质上就是一个查找算法。

但是跟普通的查找有所不同,因为我们的数据有一下特征:

1.存储的数据是非常非常多的

2.并且还不断的动态变化

所以实现索引时需要考虑到这两个特点。我们需要找一个最合适的数据结构算法来实现查找功能。

下面一起看下常见的查找策略,如下图:

f5a88d912003227d4d8441575aab32af.png

由于前面说的两个特点我们首先排除静态查找的算法。

至于查找树,我们有二叉树和多叉树两种选择:

二叉树:如果先泽二叉树的话,由于我们的数据量庞大,二叉树的深度会变得非常大,我们的索引树会变成参天大树,每次查询会导致很多磁盘IO。

多叉树:多叉树解决了了树的深度大的问题,那么我们到底选择B树还是B+树呢?

B树 摘自维基百科 https://zh.wikipedia.org/wiki/B%2B树

70253f878a780b9ac53818ba056d9ff1.png

B+树 摘自维基百科 https://zh.wikipedia.org/wiki/B%2B树

dbd4f02bc21bc0f029843569858fcd10.png

从上面图可知B+树的叶子节点存放了所有的索引值,并且

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值