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

打印 上一主题 下一主题

主题 889|帖子 889|积分 2677

聚簇索引一般指的是主键索引(如果存在主键索引的话)。
作为一个正常开发,建表时主键肯定是必须的。
而即使如果表中没有定义主键,InnoDB 会隐式选择一个唯一的非空索引代替。
所以我们就直接含糊点说:
聚簇索引就是主键索引!其余的都是非聚簇索引。
那到底什么是聚簇索引,什么是非聚簇索引
聚簇就是扎一堆儿。
聚簇索引就是将数据存储与索引放到了一块,找到索引也就找到了数据
在 innodb 中,在聚簇索引之上创建的索引称之为辅助索引,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引。
辅助索引叶子节点存储的不再是行的物理位置,而是主键值。辅助索引访问数据总是需要二次查找
而这个二次查找的过程我们给它起个名字就叫做:回表
而可以想象,回表就意味着更多磁盘IO,也就意味着慢。
也就是说回表并不是我们想见到的东西。
如何避免回表
那就要说到覆盖索引,从名字上也应该可以猜出什么是覆盖索引了。
你不是不想二次查询吗?那就直接一次查询。
那怎么能一次就查出来?索引覆盖!
什么是索引覆盖
就是把单列的非主键索引修改为多字段的联合索引,在一棵索引树上就找到了想要的数据,不需要去主键索引树上,再检索一遍这个现象,称之为索引覆盖
当然这样也会导致索引的存储空间,相当于以空间换时间,实际开发中需要自己做取舍。
文章推荐:
● 师爷,翻译翻译什么叫AOP
终于搞懂动态代理了!
● 学会@ConfigurationProperties月薪过三千
● 0.o?让我看看怎么个事儿之SpringBoot自动配置
● 不是银趴~是@Import!
● Java反射,看完就会用

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表