索引优点(2):索引是如何加快查询速度?

索引优点中,最重要的就是加快查询速度。

索引有如下3个特点,这3点虽然看上去,句句都是废话,但仔细想想就发现,这3个特点包含的东西,远远超过了3句话所涵盖的。

(1)索引有序

创建索引后,之所以查询速度会快,是由于创建索引时,会按照字段进行排序,如果有多个字段,那么会按照多个字段逐个排序。

在查找的时候,可以用类似二分查找的算法,快速判断要找的值在哪个B树的分支。


(2)索引高度不会太高

在数据量比较少的情况下,建不建索引,效果不大。


但当数据量越来越大,比如达到百万、甚至亿级的时候,查找数据就会越来越慢,为什么会那么慢呢?

在没有索引的情况下,要从头到尾的找,比如表里有1亿条数据,那么就得扫描这1亿条数据,最后可能只找到了10条满足要求的数据。

在这个过程中,大部分都是做的无用功。。。

而创建索引后,生成了B树,虽然有1亿条数据,但是这个B树不会提高,一般不超过7层,那么这个层数是如何影响查找效率的呢?

因为索引存储的值,都是在叶子节点上,所以要找到值,就必须要从B树的根开始找,如果有6层,那么相当于根开始到叶子,一共要进过6次的判断,最后找到想要的值。

所以,层数越少,比较次数少,需要读取的数据叶子数,也少,IO次数就少,那就会更快。


(3)索引中包含字段的值

给某个字段建索引,那么这个索引中就会包含这个字段的值,这句话看上去像废话,但很有用。

在某些情况下,索引不起过滤的所用,貌似这个索引好像就没什么用。

其实这个时候,对索引的访问方式,就不是原来的索引查找,而是索引扫描,也就是说sql要访问的数据,都可以直接从索引中出来,那么就没必要去查表的数据,索引起到的是覆盖查询的目的,相对于查整个表来说,索引页数更少,IO就少,所以查询时间就会小很多。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值