当前位置: 首页 > news >正文

聚簇索引和非聚簇索引的区别

1. 什么是聚簇索引(Clustered Index)

InnoDB 中:

PRIMARY KEY(id)

对应的索引就是聚簇索引。

特点:

数据和索引存储在一起。

例如:

主键索引(B+Tree) 10 / \ / \ 5 20 叶子节点: 1 -> 用户1完整数据 2 -> 用户2完整数据 3 -> 用户3完整数据

叶子节点保存:

整行数据

例如:

id=1,name=Tom,age=18

聚簇索引特点

叶子节点:

存放完整记录

所以:

select * from user where id = 1;

过程:

主键索引 ↓ 定位叶子节点 ↓ 获得完整数据

只查一次树。


2. 什么是非聚簇索引(二级索引)

例如:

create index idx_name on user(name);

这是普通索引。

又叫:

Secondary Index 二级索引 辅助索引

叶子节点存什么?

不是完整数据。

而是:

索引列 + 主键值

例如:

Tom -> 1 Jack -> 2 Lucy -> 3

这里:

1、2、3

其实就是:

主键ID

3. 查询过程区别

假设:

select * from user where name='Tom';

第一步

先查普通索引:

idx_name Tom -> 1

得到:

id = 1

第二步

再去主键索引查:

id = 1

找到:

完整行数据

整个过程:

普通索引 ↓ 获取主键id ↓ 主键索引 ↓ 获取数据

这个过程叫:

回表(Back To Table)


4. 为什么会有回表

因为二级索引叶子节点没有保存完整数据。

只保存:

索引列 + 主键值

例如:

Lucy -> 3

数据库拿到:

id=3

之后必须:

再查一次聚簇索引

获取:

name age address ...

5. 什么情况不会回表

例如:

select id,name from user where name='Tom';

二级索引:

name + id

已经包含:

id name

需要的数据都在索引里。

无需再查主键树。

这叫:

覆盖索引(Covering Index)


执行计划:

EXPLAIN

会看到:

Using index

说明:

没有回表

6. 聚簇索引和非聚簇索引对比

对比项聚簇索引非聚簇索引
数量只能一个可以多个
对应主键索引普通索引、唯一索引
叶子节点完整数据主键值
查询次数一次两次(回表)
查询速度更快稍慢
是否回表不会可能会
存储顺序按主键顺序按索引列顺序

7. 为什么只能有一个聚簇索引

因为:

数据只能按照一种顺序存储

例如:

数据按:

id

排序存储:

1 2 3 4 5

那就不可能同时按:

name

排序存储:

Jack Lucy Tom

因此:

聚簇索引只能有一个

而:

普通索引可以有很多个

因为它们只是额外维护的B+Tree。


面试标准答案

InnoDB 中主键索引是聚簇索引,其叶子节点存储完整数据记录,因此通过主键查询时只需查一次 B+Tree 即可获取数据。
普通索引属于非聚簇索引(二级索引),其叶子节点存储的是索引列和主键值,而不保存完整数据。查询时先通过二级索引找到主键,再通过主键索引获取完整记录,这个过程称为回表。
如果查询字段全部包含在二级索引中,则可以直接返回结果,形成覆盖索引,避免回表,提高查询性能。
由于数据只能按一种物理顺序存储,因此一个表只能有一个聚簇索引,但可以有多个非聚簇索引。

http://www.jsqmd.com/news/1023442/

相关文章:

  • Delta Lake + Flink 近实时数据湖 Schema 演化实战
  • 基于矮猫鼬优化算法DMOA的多无人机协同集群避障路径规划算法研究,目标函数:最低成本:路径、高度、威胁、转角附Matlab代码
  • 2026年6月国内靠谱的泡沫托厂家选哪家,水果泡沫箱/草莓泡沫包装箱/海鲜泡沫包装箱/工业品泡沫箱,泡沫托定制哪家好 - 品牌推荐师
  • PiStorm故障排除终极指南:常见问题解决和硬件兼容性检查清单
  • 临沧市_闲置爱马仕、劳力士变现指南:临沧市奢侈品手表包包回收门店实地测评 - 奢金汇
  • 乌鲁木齐闲置黄金变现攻略与靠谱门店推荐 - 余生黄金回收
  • GR-3(通用机器人VLA模型)
  • TeslaMate实战部署指南:从零搭建你的专属特斯拉数据中心
  • PostgreSQL向量搜索革命:pgvector扩展深度解析与实践指南
  • 【状态估计】基于无卡尔曼滤波器和卡尔曼滤波器实现GPS-INS融合对6自由度无人机的状态估计附matlab代码
  • [Linux]从发行版差异到系统排查:一份Linux部署指令的入门混搭笔记
  • 美团浏览器:面向本地服务优化的垂直浏览器架构解析
  • JD_AutoComment:让电商评价告别机械重复,体验智能自动化新境界
  • Tinymind架构解析:探索GitHub驱动的博客系统核心代码实现
  • C++模板及实战,以及重载运算符
  • Kimi K2.5:零代码智能体集群驱动的自然语言办公操作系统
  • 3步终结滚动混乱:macOS设备感知型滚动方向管理器
  • 如何用GanttProject免费开源项目管理工具高效管理项目:5个核心秘诀
  • 临汾市_临汾市奢侈品回收门店红黑榜:综合实力最强的五家店铺推荐 - 奢金汇
  • 中国6N级高纯度钨粉断供,日本高端六氟化钨停产,中国企业逆袭在望!
  • 2026济南市家用空调-中央空调等维修安装移机加氟-本地精选指南 -欧米到家 - 欧米到家
  • 申论笔记pdf百度云|网盘|电子版
  • Telegraph Webhook 完全指南:实现实时消息处理与事件响应
  • 离线私有化智能体实战:本地大模型部署硬件基准与非侵入式架构演进
  • AI Delivery软件工程交付理论及实战
  • 终极5分钟指南:Adobe-GenP 3.0全系列软件高效激活方案
  • 临沂市_临沂市奢侈品手表包包回收价格差距高达15%:实测对比告诉你哪家店报价最实在 - 奢金汇
  • 一个被忽略的行草范本:傅山这轴六言诗,藏着“行气不断”的密码,新手也能用
  • 2026太原黄金回收价格表 正规商家推荐与避坑攻略 - 余生黄金回收
  • 2026 浙江舟山市全域彩钢瓦翻新 / 防水补漏修缮公司 TOP4 权威推荐|优劣对比 + 海岛专属避坑指南 - 本地便民网