MYSQL索引

一.索引(index)是什么?

就相当于一本书的目录,方便我们更快速的查找的我们想要的知识.

MYSQL的索引也是一样的,通过索引让我们更快速的查找的我们想要的东西,通过特殊的数据结构来表示一些记录的特征,通过比较这些特征,进而减少了查找的次数.

想想书的目录也是要废纸的,数据库的索引也要消耗额外存储空间,数据越大消耗的存储空间也就越大.

二.索引带来的好处与坏处?

好处:提高了查找的效率

坏处:占用了更多的内存.拖慢了增删改的速度

但是,在我们实际的操作过程中,往往使用查询是最为频繁的,所以数据库的索引是很有必要的

有了索引之后提升的速度是巨大了,想想当mysql中表的数量级达到了几千万,如果去遍历表,就会非常的低效,而且mysql进行比较的时候不是在内存上的,而是在磁盘上的,磁盘IO的速度比内存要慢上3-4个数量级,

三.索引背后的数据结构

最适合做索引的还是树型的结构,不过不是二叉树,而是多叉树,而数据库中使用的又和多叉树不太一样,是一个很特殊的多叉树,因此我们称为B+树(这个是数据库中最常见的数据结构).

 

B+树相比于B-树 分成了N个区间,非叶子节点的值,都会在叶子节点中体现出来,父节点的值都会在子节点中体现出来,父节点的值会作为子节点的最值(max或min值),叶子节点会使用链表进行连接,之后我们也可以进行范围查找.

四.B+树的好处

1.使用B+树进行查找的时候,磁盘IO次数较少

2.所有要查询的结果都会在叶子节点上体现出来,每次查询的IO次数差不多,因此查找比较稳定

3.叶子节点使用链表连接之后,非常适合范围查询如:查找[5-11]

4.所有的数据存储(载荷payload)都会存储在叶子节点上,非叶子节点只放了key值,因此非叶子节点的整体占空间小,甚至可以放到内存中!!!(放入内存以为着磁盘IO几乎可以忽略不记)

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值