MySQL聚簇索引和非聚簇索引的区别

聚簇索引

聚簇索引对比的是主键,如果主键能够对应的上,那么就能直接查询到主键对应的行数据。

非聚簇索引

但是二级索引的叶子节点存储的是主键,因此当二级索引能够匹配上之后,只能拿到主键的信息,
然后在根据主键的信息,去聚簇索引里面找到叶子节点所对应行数据,这样才能完成二-级索引的数据查询。
我们把二级索引进行查询数据的这个过程叫做回表查询。- > 二级索引-> ID->又去查询聚簇索引,找到相应的数据

在这里插入图片描述
从上述图⽚可以看出,聚簇索引叶⼦节点存储的是表的⾏数据,所以可以直接返回结果;⽽⾮聚簇索引
叶⼦节点存储的是主键 id,需要使⽤主键 id 再去聚簇索引中获取表的相关信息,所以执⾏效率没有聚簇
索引⾼,⽽这个查询的过程就叫做回表查询。

区别

聚簇索引和⾮聚簇索引的区别主要体现在两⽅⾯:
**1. 执⾏效率:**聚簇索引查询速度更快,因为聚簇索引存储的是数据,⽽⾮聚簇索引存储的是主键 ID,
需要进⾏回表查询。
2. 数量上:聚簇索引⼀个表只能有⼀个,⽽⾮聚簇索引可以有多个。

聚簇索引生成规则(MySQL InnoDB) :

1.正常情况下,所有的表中都会有-个主键索引。大部分的时候聚簇索引就是主键,默认的情况下就是主键索引。
假如不存在主键时
2.非正常情况,也就是没有主键索引的情况下,那么此时InnoDB会使用一个唯-且非空的索引作为聚簇索引。
3.如果没有主键索引且没有唯一-不为nulI的索引, 那么InnoDB会自动生成-个隐藏的聚簇索引。
I

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值