深入浅出索引(上)读后感

深入浅出索引(上)读后感

​ “索引的出现是为了提高查询效率,就像书的目录”。

主键索引和二级索引

​ 索引分为主键索引和非主键索引,主键索引也叫做聚簇索引,即叶子节点存放的是主键和整条数据。非主键索引也叫做二级索引,叶子节点存放的主键。通过二级索引查找数据的话,除非select后面的字段是普通索引和主键索引,否则一定会需要进行回表,通过二级索引查找到对应的主键,然后查找主键索引树,找到对应的数据。

主键索引一定要自增吗?

​ MySQL建表规范有这样一句话,“每张表最好要有一个自增主键”。然而事无绝对,直接通过例子来分析,什么场景下适合自增主键,什么场景下适合业务主键。

什么时候用自增主键?

​ 为什么主键需要自增?我觉得,可以从索引树的维护上来讨论。

​ 从主键索引树的维护上来说,由于添加数据的同时,还需要更新索引树,如果不是自增的主键,添加的时候,就有可能在两个节点之间插入数据,如果刚好此时这个数据页的数据满了,就会导致页分裂,而对于自增主键的话,则是直接进行添加节点,不会有页分裂现象。

​ 从二级索引树的维护上来说,假设有一张表,身份证为唯一索引,那适合用身份证当成主键吗?如果用身份证当主键的话,那么表中的二级索引的叶子节点就至少需要20字节的大小,如果是自增主键的话,对应int类型只占用4个字节,bigint类型,也只是8个字节。从二级索引的维护来说,该种场景下,自增主键更合适。

什么时候用业务字段当主键?

​ 如果业务场景的需求是,只有一个索引,并且这个索引是唯一索引。由于没有其他索引,不需要考虑二级索引的叶子大小问题,那么就可以放心使用身份证作为主键。

总结

第一次看技术文章,做出自己的小总结,不算是总结,算是一种回顾。刚开始,是打算通篇回顾,但是发现脑子不够用,于是最后选择抓住重点,对自己之前不太理解的知识点进行回顾。读完丁奇大佬的这篇文章,我知道了主键索引和二级索引的区别,一个叶子节点存放整行数据,一个是叶子节点存放主键。也知道了,为什么说推荐表中使用自增主键,一个方便主键索引树的维护防止页分裂,一个是方便二级索引树的维护(减少叶子节点的大小)。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值