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

简介: 聚簇索引将数据与索引存储在一起,B+树叶子节点包含整行数据,每张表仅有一个,通常为主键索引。若无主键,MySQL会选首个非空唯一索引或自动生成rowID作为聚簇索引。二级索引则分离存储,叶子节点保存主键值,可有多个。

必答内容:

这个还是比较清楚的,因为这个是我们在项目中进行SQL语句优化的理论基础。聚簇索引,有时候也称为聚集索引,他的特点呢就是数据与索引存放在一块儿,B+tree的叶子节点保存了整行数据,而且在一张表中,聚簇索引有且仅有一个,默认主键索引就是聚簇索引。二级索引,有时候也称为非聚簇索引或 辅助索引,指的是数据和索引分开存储,B+tree的叶子节点保存对应的主键,二级索引在一张表中可以有多个。

进阶内容(细节):

那刚才提到,默认主键索引就是聚簇索引;虽然在项目开发中我们建议每一张表都必须要添加一个主键,但是从数 据库本身来说,一张表是可以没有主键的,那如果没有主键,MVSQL数据库会自动的选择第一个非空的唯一索引作为聚簇索引;而如果一张表既没有主键,又没有唯一索引,那这个时候MySQL数据库又会自动生成一个rowID作为聚簇索引。简单说,一张表必须有且仅有一个聚簇索引。所以,从这个角度讲,在二级索引的叶子节点中存储的其实是对应的聚集索引的值(如果有主键,就是主键值;没有主键,有非空的唯一索引,那就是唯一索引的值;如果既没有主键,也没有非空的唯一索引,那就是自动生成的rowID的值)。

相关文章
|
存储 并行计算 算法
C++进程间通信之共享内存
C++进程间通信之共享内存
1728 0
|
Java API 网络架构
深入理解 Spring Boot 中的 @RestController 注解:概念与实践
【4月更文挑战第20天】在现代Web开发中,创建RESTful服务已成为常态。Spring Boot通过提供@RestController注解,极大简化了REST API的开发过程。本篇博客旨在详细介绍@RestController的概念、优势以及在Spring Boot项目中的具体应用方法。
1268 8
|
9月前
|
存储 关系型数据库 MySQL
深入浅出地解释MySQL MVCC机制原理及实现方式。
总结起来,MVVC 在 MySQL 中通过结合乐观 并 发 控 制 和精巧设计内部结构使得数据库能够处理大规模 并 发 访问 覆盖 复杂场景需求同时保证高效率运转.
450 10
|
10月前
|
存储 关系型数据库 MySQL
知道什么是聚簇索引,什么是二级索引吗?
本文介绍了数据库中的聚簇索引与二级索引概念。聚簇索引将数据与索引存储在一起,每张表仅有一个,通常为主键索引。若无主键,则会选择非空唯一索引或自动生成rowID作为聚簇索引。二级索引则存储主键值,支持多条索引,用于加速查询过程。
282 26
|
10月前
|
安全 Java 数据库
使用Java实现用户的注册和登录流程
以上提供了用户注册和登录的基本框架和必要的说明。在具体的应用场景中,可能还需结合框架特性如Spring Security等提供的高级特性来实现更为完备和安全的用户认证机制。在开发期间,务必注重代码的安全性、清晰性和可维护性,为用户资料保驾护航。
633 13
|
JSON 关系型数据库 MySQL
MySQL 8.0常用函数汇总与应用实例
这些函数只是MySQL 8.0提供的众多强大功能的一部分。通过结合使用这些函数,你可以有效地处理各种数据,优化数据库查询,并提高应用程序的性能和效率。
449 3
|
关系型数据库 MySQL 数据库
MySQL高级篇——MVCC多版本并发控制
什么是MVCC、快照读与当前读、隐藏字段、Undo Log版本链、ReadView、举例说明、InnoDB 解决幻读问题
MySQL高级篇——MVCC多版本并发控制
|
jenkins Java 持续交付
Docker搭建jenkins环境
这篇文章详细介绍了如何利用Docker搭建Jenkins环境,包括拉取Jenkins镜像、配置端口映射及初始化设置的步骤。
762 0
Docker搭建jenkins环境
|
前端开发 JavaScript API
现代Web开发中的前后端分离架构
本篇文章探讨了前后端分离架构在现代Web开发中的应用与优势。
|
Java 测试技术 持续交付
Java一分钟之-Spring Cloud Contract:契约测试
【6月更文挑战第16天】Spring Cloud Contract是微服务契约测试框架,通过DSL定义接口行为,使用WireMock生成存根进行独立开发验证。常见问题包括契约编写不清晰、未集成到CI/CD和契约版本控制混乱。例如,定义一个`GET /greeting`返回JSON响应的契约,Spring Cloud Contract会自动生成测试代码,帮助确保服务间接口一致性,提升开发效率和系统稳定性。
607 7

热门文章

最新文章