我是靠谱客的博主 安详手机,这篇文章主要介绍索引优点(2):索引是如何加快查询速度?,现在分享给大家,希望可以做个参考。

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

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

(1)索引有序

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

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


(2)索引高度不会太高

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


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

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

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

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

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

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


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

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

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

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

最后

以上就是安详手机最近收集整理的关于索引优点(2):索引是如何加快查询速度?的全部内容,更多相关索引优点(2):索引是如何加快查询速度内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部