MySQL聚簇索引概念总结

利用这篇文章对MySQL聚簇索引的一些概念做一些总结,有不对的地方还请各位看官帮忙指正。/手动抱拳

聚簇索引定义

聚簇索引就是每张表构建一个B+树,每一个节点都是一,叶子节点存放的是整张表的行记录,所以叶子节点也叫数据页。

MySQL中的页

页的概念

页可以理解为一个存储空间,MySQL中每一页大小为16kb(16384)。MySQL每次查询数据时都是以页为单位取数据到内存中,即每次查询至少取一页的数据到内存,也叫局部性原则

页的结构

引用一篇大佬的文章

聚簇索引的构建

当一张表的数据页超过两页时(叶子节点数 >= 2),会将原先的数据页copy一份,与新页一起充当叶子节点,第一页作为根节点,修改根节点。根节点存储的是每个数据页的起始主键。由于每一页的page directory中也会存放对应的主键,所以聚簇索引中主键会有冗余。

非聚簇索引

非聚簇索引也是一棵B+树。我们通常所说的索引都是辅助索引,辅助索引其实就是非聚簇索引,因为其叶子节点并不存储行记录,而是存储主键值。当我们使用辅助索引查询时,其实是先通过非聚簇索引查询到主键值,然后根据主键值去聚簇索引中查询实际的行记录,这个根据主键值去聚簇索引中查询的过程就叫做回表
注意:我们这里所说的主键值并不一定是MySQL表中的主键,如果我们没有建立主键,那么MySQL会选择唯一索引建立B+树,如果没有唯一索引,那么MySQL会使用一个隐藏列,row_id去建立B+树。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值