首页 > 基础资料 博客日记

聚簇索引、回表与覆盖索引

2024-02-04 18:11:57基础资料围观316

文章聚簇索引、回表与覆盖索引分享给大家,欢迎收藏Java资料网,专注分享技术知识

聚簇索引一般指的是主键索引(如果存在主键索引的话)。

作为一个正常开发,建表时主键肯定是必须的。

而即使如果表中没有定义主键,InnoDB 会隐式选择一个唯一的非空索引代替。

所以我们就直接含糊点说:

聚簇索引就是主键索引!其余的都是非聚簇索引。

那到底什么是聚簇索引,什么是非聚簇索引

聚簇就是扎一堆儿。

聚簇索引就是将数据存储与索引放到了一块,找到索引也就找到了数据

在 innodb 中,在聚簇索引之上创建的索引称之为辅助索引,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引。

辅助索引叶子节点存储的不再是行的物理位置,而是主键值。辅助索引访问数据总是需要二次查找

而这个二次查找的过程我们给它起个名字就叫做:回表

而可以想象,回表就意味着更多磁盘IO,也就意味着慢。

也就是说回表并不是我们想见到的东西。

如何避免回表

那就要说到覆盖索引,从名字上也应该可以猜出什么是覆盖索引了。

你不是不想二次查询吗?那就直接一次查询。

那怎么能一次就查出来?索引覆盖!

什么是索引覆盖

就是把单列的非主键索引修改为多字段的联合索引,在一棵索引树上就找到了想要的数据,不需要去主键索引树上,再检索一遍这个现象,称之为索引覆盖

当然这样也会导致索引的存储空间,相当于以空间换时间,实际开发中需要自己做取舍。


文章推荐:

● 师爷,翻译翻译什么叫AOP

终于搞懂动态代理了!

● 学会@ConfigurationProperties月薪过三千

● 0.o?让我看看怎么个事儿之SpringBoot自动配置

● 不是银趴~是@Import!

● Java反射,看完就会用


文章来源:https://www.cnblogs.com/cosimo/p/18006745
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云