MySQL的InnoDB引擎中的聚簇索引和非聚簇索引有什么区别?

devtools/2025/2/25 10:15:43/

聚簇索引:聚簇索引之所以叫聚簇索引,是因为它将数据存储与索引放到了一块。聚簇索引采用 B+ 树的数据结构,它的非叶子节点存储索引键值指向子节点的指针,叶子节点存储 完整的数据行。一个表只能有一个聚簇索引,聚集索引选取规则如下:

  • 如果表定义了主键(PRIMARY KEY),则主键自动成为聚簇索引。

  • 如果没有主键,InnoDB会选择第一个唯一的非空索引(UNIQUE NOT NULL)作为聚簇索引。

  • 如果既无主键也无唯一索引,InnoDB会隐式生成一个隐藏的ROW_ID列作为聚簇索引。

在查找效率上,通过聚簇索引查询时,可以直接定位到数据行,无需回表。

非聚簇索引(又叫二级索引):非聚簇索引之所以叫非聚簇索引,是因为它将数据与索引分开存储。非聚簇索引也是采用 B+ 树的数据结构,它的非叶子节点存储索引键值指向子节点的指针,叶子节点存储 索引键值主键值。一个表可以有多个非聚簇索引。通过非聚簇索引查询时,需要先找到主键,再通过聚簇索引回表查询完整数据(称为回表查询)。以下是回表查询的例子:

非聚簇索引如何避免回表:如果查询的字段全部包含在索引中(如联合索引),可避免回表,直接通过索引返回结果。


http://www.ppmy.cn/devtools/161563.html

相关文章

超详细介绍map(multimap)的使用

map类的介绍 map的声明如下,Key是map底层关键字的类型,T是map底层value的类型。set默认要求Key支持小于比较,如果不支持或者需要的情况下我们可以自行传入仿函数,map底层存储数据的内存是从空间申请来的。一般情况下,我…

1.13 重叠因子:简单移动平均线(Simple Moving Average, SMA)概念与Python实战

目录 0. 本栏目因子汇总表1. 因子简述2. 因子计算逻辑3. 因子应用场景4. 因子优缺点5. 因子代码实现6. 因子取值范围及其含义7. 因子函数参数建议 0. 本栏目因子汇总表 【量海航行】 1. 因子简述 简单移动平均线(Simple Moving Average, SMA)是最基础且应用最广泛的技术指标…

Android TextView 使用.9图片文字不展示

参考文章 Android的TextView设置padding无效。 实现如上图效果的时候,选择框使用了.9,代码如下: LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(0,

硬件加速与技术创新双轮驱动:DeepSeek和ChatGPT性能进阶的未来蓝图

🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 ​ Linux网络编程笔记: https://blog.cs…

Prometheus中ServiceMonitor 配置示例

以下是一个完整的 ServiceMonitor 配置示例(用于 Prometheus Operator),用于监控 Kubernetes 中的服务(如 Flink JobManager/TaskManager): 1. ServiceMonitor 配置示例 apiVersion: monitoring.coreos.co…

Python在大数据AI领域的优势分析【为什么使用Python开发】

大数据分析、大模型和 AI 领域主要采用 Python,并非其他语言完全不能使用,而是 Python 在以下方面形成了显著优势,形成了一个正反馈循环的生态系统。我们可以从多个角度分析: 1. 语法简洁:开发效率优先 特点&#xff…

知识管理系统实施优化路径

内容概要 现代知识管理系统的实施优化路径呈现出多维整合特征,其核心在于系统集成与组织适配的动态平衡。从技术架构层面,系统需突破信息孤岛桎梏,通过语义网络优化实现非结构化数据的智能解析,例如运用Baklib这类支持API接口的知…

【MySQL】表的增删查改(CRUD)(上)

个人主页:♡喜欢做梦 欢迎 👍点赞 ➕关注 ❤️收藏 💬评论 CRUD:Create(新增数据)、Retrieve(查询数据)、Update(修改数据)、Delete(修改数据…