Mysql聚集索引和非聚集索引区别

一、聚集索引

如果我们给表上了主键,那么表在内存上由整齐的排列结构变成了树状结构,也就是【平衡树】结构,换句话说就是整个表变成了一个索引——【聚集索引】,这就是为什么一个表真能勾一个主键,一个表只能有一个【聚集索引】,因为主键的作用就是把表的数据格式转换成为了(索引)【平衡树】的格式存放。
InnoDB使用的是 【聚簇索引】

二、非聚集索引

非聚集索引和聚集索引一样,同样采用平衡树作为索引的数据结构。索引树结构中各个节点的值来自于表中的索引字段,假如给user表的name字段加上索引,那么索引就是由name字段中的值构成,在数据改变时,DBMS(数据库管理系统)需要一直维护索引结构的正确性。如果给表中多个字段加上索引,那么就会出现多个独立的索引结构。每个非聚集索引互相之间不存在关联。
MyISAM使用的是【非聚簇索引】

三、两者之间的区别

①聚集索引在叶子节点存储的是表中的数据
②聚集索引表示表中存储的数据按照索引的顺序存储,检索效率比非聚集索引高,但对数据更新影响较大。
③通过聚集索引可以直接查到需要查找的数据


④非聚集索引在叶子节点存储的是主键和索引列
⑤使用非聚集索引查询出数据时,拿到叶子上的主键再去查到想要查找的数据。(拿到主键再查找这个过程叫做【回表】或者叫做【回旋】)。
⑥非聚集索引表示数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置,非聚集索引检索效率比聚集索引低,但对数据更新影响较小。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容