知道什么是聚簇索引,什么是二级索引吗?

简介:

● 必答内容:
这个还是比较清楚的,因为这个是我们在项目中进行SQL语句优化的理论基础。
聚簇索引,有时候也称为聚集索引,他的特点呢就是数据与索引存放在一块儿,B+tree的叶子节点保存了整行数据,而且在一张表中,聚簇索引有且仅有一个,默认主键索引就是聚簇索引。
二级索引,有时候也称为非聚簇索引 或 辅助索引,指的是数据和索引分开存储,B+tree的叶子节点保存对应的主键,二级索引在一张表中可以有多个。
● 进阶内容(细节):
那刚才提到,默认主键索引就是聚簇索引;虽然在项目开发中我们建议每一张表都必须要添加一个主键,但是从数据库本身来说,一张表是可以没有主键的,那如果没有主键,MySQL数据库会自动的选择第一个非空的唯一索引作为聚簇索引;而如果一张表既没有主键,又没有唯一索引,那这个时候MySQL数据库又会自动生成一个rowID作为聚簇索引。简单说,一张表必须有且仅有一个聚簇索引。
所以,从这个角度讲,在二级索引的叶子节点中存储的其实是对应的聚集索引的值(如果有主键,就是主键值;没有主键,有非空的唯一索引,那就是唯一索引的值;如果既没有主键,也没有非空的唯一索引,那就是自动生成的rowID的值)。image.png

● 帮助理解的图示:
○ 聚簇索引的叶子节点中存储的data,就是这个主键对应的这一行的数据。
○ 二级索引叶子节点中存储的值,就是这个字段值对应的主键ID。

相关文章
|
22小时前
|
存储 关系型数据库 MySQL
|
22小时前
|
Java 应用服务中间件 Linux
|
22小时前
|
存储 安全 Java
|
22小时前
|
Java
|
22小时前
|
Java 程序员 数据库连接
|
22小时前
|
存储 算法 Java
|
22小时前
|
存储 消息中间件 开发框架
应用架构图
在上一节有了业务架构的基础之上,当我们需要落地具体的技术方案时,此时就需要技术人员开始考虑技术架构了。技术架构是应接应用架构的技术需求,并根据识别的技术需求,进行技术选项,把各个关键技术和技术之间的关系描述清楚。 基础结构解决的主要问题包括:如何进行技术层面的分层、开发框架的选择、开发语言的选择、涉及非功能性需求的技术选择。由于应用架构体系是分层的,那么对应的技术架构体系自然也是分层的。大的分层有微服务架构分层模型,小的则是单个应用的技术分层框架。大的技术体系考虑清楚后,剩下问题就是根据实际业务考虑选择具体的技术点。各个技术点的分析、方案选择,最终形成关键技术清单,关键技术清单应考虑架构本身的
|
22小时前
|
Java
|
22小时前
|
存储 安全 Java