关于mysql索引的一些问题
2021/9/4 19:06:16
本文主要是介绍关于mysql索引的一些问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 什么叫聚集索引与普通索引
聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个聚集索引
普通索引的叶子节点存储主键值。
假设有下表table
table (id PK, name KEY, sex, flag);
表中有四条记录:
1, shenjian, m, A
3, zhangsan, m, A
5, lisi, m, A
9, wangwu, f, B
则该表的聚集索引和普通索引的B+树的数据结构如下图所示。
如上图左右聚集索引,右为普通索引。从普通索引是无法直接定位到行记录的,只能查询到主键的值。
2. 既然普通索引不能直接插到行的记录,那普通索引的查询过程是怎么样的呢?
如粉红色路径,即为普通索引的查询过程,需要扫码两遍索引树:
(1)先通过普通索引定位到主键值id=5;
(2)在通过聚集索引定位到行记录;
这就是所谓的回表查询,先定位主键值,再定位行记录,它的性能较扫一遍索引树更低。
3.什么是索引覆盖 (Covering index) ?
只需要在一棵索引树上就能获取SQL所需的所有列数据,无需回表,速度更快。
这篇关于关于mysql索引的一些问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南