会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 面试突击:聊聊聚簇索引和非聚簇索引到底有什么区别?!

面试突击:聊聊聚簇索引和非聚簇索引到底有什么区别?

时间:2025-11-04 23:26:08 来源:益强数据堂 作者:IT科技类资讯 阅读:637次

在 MySQL 默认引擎 InnoDB 中,面试索引大致可分为两类:聚簇索引和非聚簇索引,突击它们的聊聊区别也是常见的面试题,所以我们今天就来盘它们。聚簇聚簇

聚簇索引

聚簇索引(Clustered Index)一般指的索引索引是主键索引(如果存在主键索引的话),聚簇索引也被称之为聚集索引。和非

聚簇索引在 InnoDB 中是到底使用 B+ 树实现的,比如我们创建一张 student 表,区别它的面试构建 SQL 如下:

drop table if exists student;

create table student(

id int primary key,

name varchar(16),

class_id int not null,

index (class_id)

)engine=InnoDB;

-- 添加测试数据

insert into student(id,name,class_id) values(1,张三,100),

(2,李四,200),(3,王五,300);

以上 student 表中有一个聚簇索引(也就是主键索引)id,和一个非聚簇索引 class_id。突击

聚簇索引 id 对应的聊聊 B+ 树如下图所示:

在聚簇索引的叶子节点直接存储用户信息的内存地址,我们使用内存地址可以直接找到相应的免费源码下载聚簇聚簇行数据。

非聚簇索引

非聚簇索引在 InnoDB 引擎中,索引索引也叫二级索引,和非以上面 student 表为例,到底在 student 中非聚簇索引 class_id 对应 B+ 树如下图所示:

从上图我们可以看出,在非聚簇索引的叶子节点上存储的并不是真正的行数据,而是主键 ID,所以当我们使用非聚簇索引进行查询时,首先会得到一个主键 ID,然后再使用主键 ID 去聚簇索引上找到真正的行数据,我们把这个过程称之为回表查询。

总结

在 MySQL 的 InnoDB 引擎中,每个索引都会对应一颗 B+ 树,而聚簇索引和非聚簇索引最大的区别在于叶子节点存储的数据不同,聚簇索引叶子节点存储的云服务器是行数据,因此通过聚簇索引可以直接找到真正的行数据;而非聚簇索引叶子节点存储的是主键信息,所以使用非聚簇索引还需要回表查询,因此我们可以得出聚簇索引和非聚簇索引的区别主要有以下几个:

聚簇索引叶子节点存储的是行数据;而非聚簇索引叶子节点存储的是聚簇索引(通常是主键 ID)。聚簇索引查询效率更高,而非聚簇索引需要进行回表查询,因此性能不如聚簇索引。聚簇索引一般为主键索引,而主键一个表中只能有一个,因此聚簇索引一个表中也只能有一个,而非聚簇索引则没有数量上的限制。

(责任编辑:数据库)

推荐内容
  • 用姓氏头像制作教程(轻松制作个性化姓氏头像,让电脑与个人独特结合)
  • 七彩虹GT6502G(揭秘七彩虹GT6502G的性能、特点和用户体验)
  • 固态硬盘故障修复指南(解决以西数固态硬盘常见故障问题,恢复数据并提高性能)
  • 神舟笔记k670d装系统教程(学习如何为神舟笔记k670d安装操作系统的简易步骤)
  • 磁盘分区教程(深入探索MBR的功能、用途和实现方法)
  • 以351.4挂机的摄影体验(捕捉瞬间的绝佳利器-351.4镜头)