【MySQL-索引调优】05:索引相关概念

索引

  • 索引的本质是一种数据结构。在InnoDB存储引擎中,索引底层采用B+Tree实现
  • 可以理解为数据库在数据表之外维护了一棵(或多棵)有序的B+Tree,用于加快数据查询速度

1-聚簇索引

如果定义了主键,InnoDB会使用主键作为聚簇索引。聚簇索引的B+Tree叶子节点存储的是整行数据,因此通过主键索引可以直接获取整条记录

2-二级索引

你在其他列上建的索引,就是二级索引

二级索引的叶子节点存储的是主键值,而不是整行数据

查询时会先通过二级索引找到主键,再通过主键索引找到整行数据,这个过程叫回表

3-影响

索引可以提高查询速度,但不能无限制创建

因为在执行 INSERT、UPDATE、DELETE 时,不仅需要修改表数据,还需要同步维护所有相关索引的 B+Tree 结构

索引过多会降低数据写入性能,并增加存储空间占用

4-简单B+tree概念

只需要理解:

4-1.为什么查得快

因为:

复制代码
B+树高度很低

一般:

复制代码
1000万数据
树高可能才 3~4 层

查找:

复制代码
3~4 次磁盘IO

4-2. 为什么范围查询快

B+树叶子节点:

复制代码
是链表

所以:

复制代码
WHERE id BETWEEN 1000 AND 2000

可以:

复制代码
1000 → 1001 → 1002 → ... → 2000

顺序扫描

相关推荐
虚拟世界AI12 分钟前
Kronos 时间序列数据库新手部署与实战指南
数据库
波力海苔夹心脆67522 分钟前
C# 正则表达式零基础入门:从“看得懂“到“会用“
经验分享·后端·mysql·正则表达式·c#
愤怒火龙果30 分钟前
AI攻防 AIRT03-RAG Exploitation & Vector Database Attacks
数据库·人工智能·网络安全
SelectDB42 分钟前
高并发 BI 看板怎么撑住:隔离与加速配置速查
大数据·数据库·数据分析
l1t1 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
麦壳饼2 小时前
SonnetDB:向量召回率评估中的精确基线与参数记录
数据库·sonnetdb
ClouGence2 小时前
数据如何随时可用?广西水牛先生的 MySQL 实时同步实践
数据库·mysql·数据分析
斯晨的AI笔记2 小时前
rsync 部署避坑:脚本执行位被 git 模式位抹掉,巡检备份双静默失败的排查与根治
数据库
这个DBA有点耶2 小时前
innodb_autoinc_lock_mode的三种模式:批量插入时自增锁的持有逻辑与调优
数据库·架构·代码规范
我命由我123452 小时前
5-1.Python 编码进阶 - 函数进阶(参数、返回值、递归、函数作为参数传递、lambda 匿名函数)
java·服务器·数据库·后端·python·java-ee·python3.11