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

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

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

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

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

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

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

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

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


http://www.kler.cn/a/560569.html

相关文章:

  • 如何用HBase轻松管理海量数据?
  • 蓝桥杯备赛-迷宫-BFS
  • leetcode_二叉树 543.二叉树的直径
  • GreatSQL修改配置文件参数无法生效
  • jvm调试和查看工具
  • 与go比肩的FastAPI,如何快速入门
  • Java 大视界 -- 深入剖析 Java 大数据实时 ETL 中的数据质量保障策略(97)
  • go实现敏感词过滤
  • 我与Linux的爱恋:了解信号量+共享内存+消息队列的应用
  • 【quicker】调节PPT指定字号字体大小/快速调节WPS的PPT字体大小
  • 专用奶泡棒芯片SOC,WD8001
  • 计算机毕业设计SpringBoot+Vue.js足球青训俱乐部管理系统(源码+文档+PPT+讲解)
  • Origin 2024绘图与数据分析下载|附安装包+学习教程
  • 模版语法vscode
  • git从本地其他设备上fetch分支
  • Spring Cloud Gateway 网关的使用
  • AWS IoT Core与AWS服务协同:构建强大的物联网解决方案
  • langchain系列(四)- LangChain 的RAG原理与代码实现
  • 005:Cesium.viewer 知识详解、示例代码
  • 利用python和gpt写一个conda环境可视化管理工具