MySQL-聚簇索引

以下内容参考自《高性能MySQL》

1、前言

在学了聚簇索引与覆盖索引后,笔者就一直在纠结,覆盖索引与聚簇索引差不多啊,会有什么区别呢,在网上查了很多资料,感觉都是照搬书上的原话,千篇一律,讲得不明不白。通过仔细研究书上的内容,终于豁然开朗了。

2、聚簇索引

  • 1、聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。具体细节依赖于其实现方式,但InnoDB的聚簇索引实际上在同一个结构中保存

  • 2、当表有聚簇索引时,它的数据行实际上存放在索引的叶子页中。术语“聚簇”表示数据行相邻的键值紧凑的存储在一起。

  • 3、因为无法同时把数据行存放在两个不同的地方,所以一个表中只能有一个聚簇索引。

  • 以上这几句话怎么理解呢
    先看一张图:聚簇索引的数据分布
    在这里插入图片描述
    然后书上是这么说的:在InnoDB中,聚簇索引就是表!!!
    所以这就解释了为什么表中只能有一个聚簇索引了,也解释了前面为什么说聚簇索引是一种存储方式了。

  • InnoDB通过主键聚集数据,如果没有定义主键,InnoDB会选择一个唯一的非空索引代替。
    如果没有这样的索引,InnoDB会隐式定义一个主键来作为聚簇索引,也就是说无论怎么样建表后InnoDB都会创建聚簇索引,更说明InnoDB的表中的数据存储方式就是聚簇索引

3、InnoDB和MyISAM的数据对比

通过对比主键索引和二级索引(非聚簇索引)就能更加好理解了
在这里插入图片描述
什么是二级索引,除了主键索引外,其他的叫二级索引,在InnoDB中,非聚簇索引就是二级索引。

这里最好参考一下原书,讲得更深刻更清楚

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值