看不懂来骂我系列:主键索引、普通索引、覆盖索引、联合索引、最左前缀、索引下推、回表

本文详细解释了数据库索引中的关键概念,如主键索引、普通索引、回表与覆盖索引,以及联合索引和最左前缀的重要性。作者强调深度思考和理解技术背后的逻辑是提升知识掌握的关键。
摘要由CSDN通过智能技术生成

在学习索引的过程中,我对这几个名词其实一直搞不懂,而且面试时很有可能会问到这些。在最近的学习中,当我进行深度思考的时候,我发现这几个概念在逻辑上是有联系的,而且属于每个名词都有承上启下的作用,所以我特意写了一篇文章来谈谈这几个概念。

一般一张表中有很多个字段,有点字段是主键,有的字段是非主键。每对一个字段建立一个索引,索引底层就相当于建立一棵B+树。

对主键建立索引我们叫主键索引,由主键索引建立的B+树的叶子节点存放的是数据表中一整行的内容。

对非主键建立索引我们叫普通索引,由普通索引建立的B+树的叶子节点的内容是主键。

从非主键索引树回到主键索引树的这个过程我们叫回表。为什么需要回表呢?因为回表才可以查询完整的一条记录。

假如非主键索引树的叶子节点刚好包含了查询所需的列,那就不用回表了,这就叫覆盖索引。

一般来讲是对一个字段建立一个索引,形成一棵索引树。而联合索引就是对多个字段组合在一起建立一个索引,形成一棵索引树,这棵联合索引树的叶子节点包含了多个字段的值。

而最左前缀就是联合索引的最左N个字段。利用最左前缀,就可以在联合索引树中提前过滤掉不满足条件的索引项(如果没有最左前缀,那在联合索引树中只能用一个字段来筛选索引项,然后将筛选出来的索引项一个个回表,问题是一个字段筛选不太猛)。有了最左前缀,那就可以用最左的N个字段来筛选索引项,这个就猛了,几个条件一起,筛选出的索引项已经很少了,这么少的索引项再一个个回表也不久。(事实上在非主键索引树中直接筛选索引项的工作就是索引下推)

联合索引通过最左前缀+索引下推的方式来减少回表的次数

我之前对这些名词并不是非常的理解,而且我背诵的时候就是简单的理解记忆了一下,对于这些概念我还是分不清。我反思了一下,我根本就没有做到深度的思考。我不懂得怎么将多个零散的知识点串起来,所以导致我经常忘。其实我忘的原因并不是我太久没复习,原因只有一个:我根本没有真正做到理解!我的理解只是浮于表面,我以为我自己理解了,其实我只是假理解,只懂得一点皮毛,当然容易忘记!当我真正去深度思考,去逼着自己想为什么要有这门技术和这门技术解决了什么问题的时候,我就会发现我自己对这个知识点的理解更加深刻了。

学习知识,并不只需要看这个知识点本身,看冰山一角的东西,而是需要通过一个知识点争取看到整个冰山!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值