加入收藏 | 设为首页 | 会员中心 | 我要投稿 大同站长网 (https://www.0352zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

有人问你MySQL是如何查询数据

发布时间:2021-03-31 13:35:26 所属栏目:动态 来源:互联网
导读:篇我们说到了关于MySQL的索引的原理,主要说的是 MySQL 对于索引的字段是怎么去维护的,我们再来简单的回顾下: MySQL 对于主键索引的维护是最简单的,就是根据主键去维护一个 B+ 树,因为主键的特点一般是递增的,也就是说是有序的,所以 MySQL 在维护的时

篇我们说到了关于MySQL的索引的原理,主要说的是 MySQL 对于索引的字段是怎么去维护的,我们再来简单的回顾下:

MySQL 对于主键索引的维护是最简单的,就是根据主键去维护一个 B+ 树,因为主键的特点一般是递增的,也就是说是有序的,所以 MySQL 在维护的时候只需要将记录依次往数据页中追加即可,数据页满了就继续添加到下一个数据页。且每一条记录是完整的,即所有的列的值都维护。

但是对于非主键索引,在维护 B+ 树的时候,会根据联合索引的字段依次去判断。

假设联合索引为:name + address + age,那么 MySQL 在维护该索引的 B+ 树的时候,首先会根据 name 进行排序,name 相同的话会根据第二个 address 排序,如果 address 也一样,那么就会根据 age 去排序,如果 age 也一样,那么就会根据主键字段值去排序(主键不可能是一样的),且对于非主键索引,MySQL 在维护 B+ 树的时候,仅仅是维护索引字段和主键字段。

另外 B+ 树的结构大致是这样子的:


 

,我们就来一起看看对于 MySQL 的查询有哪些基本的原则。

因为只要在了解原则的基础之上,才能够写出符合预期的 SQL,才能知道自己的 SQL 到底有没有使用到索引。这是一个最最基本的原则。

本文因为讲的是一些原则,所以很多东西不是很好画图,但是能画我一定给大家画。

等值匹配原则

我们现在已经知道了如果是【主键索引】,在插入数据的时候是根据主键的顺序依次往后排列的,一个数据页不够就会分裂到另外一个数据页,然后再通过索引页来维护数据页。

数据页之间是通过双向链表来维护的,索引页如果过多就会往上分裂(就像上面这张图),以此类推,这样就形成了由组件组成的 B+ 树结构,即【聚簇索引】

但是问题是我们不仅建立了主键索引,同时也建立了非主键索引,那这时候非主键索引是如何维护的呢?

因为对于主键索引是不可能重复的,所以在保存到数据页的时候是直接追加插入的(我们默认主键是自增的)

至于非主键一般是可以重复的,假设此时某个联合索引字段的值真的都

(编辑:大同站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读