为什么加索引能提升查询效率

三个维度

  1. 为什么需要索引
  2. 索引是如何提升效率的
  3. 为什么采用B+树

为什么需要索引

如果没有索引,当我们要去查询数据的时候,需要从磁盘里面去随机查找。而机械磁盘随机读取数据需要频繁的寻找磁道以及从磁盘读取数据。这个过程非常耗时。

在这里插入图片描述

索引是如何提升效率的

有了索引以后,相对于把索引列以及所属的磁盘块地址缓存到了内存里面。

在数据查询的时候,直接可以找到目标数据列所属的磁盘地址。去读取对应的磁盘块的数据就好了,相当于减少了磁盘IO的一个次数。

为什么要采用B+树

性能的角度

磁盘IO次数越少越好。那用什么样的数据结构来存储索引列能够去达到这样的一个目的?
很显然,多路平衡查找树就是一个非常好的选择。也就是B+树或者B树。

问题回答

只要命中了索引列的一个查询,它都能够去提升查询效率。但是即便是命中了索引,查询效率也不一定会增加。比如说像性别字段去加索引,那么因为数据的散列度不高,导致可能会遍历整颗B+树。

所以我认为加索引能够提升查询效率的根本原因是InnoDB采用B+树来存储索引。那么使得在千万级数据量的一个情况下,树的高度可以控制在3层以内,而层高代表磁盘IO的一个次数。

因此基于索引查找,它可以减少磁盘IO的一个次数。

参考资料为什么加索引能提升查询效率

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值