什么是覆盖索引 ?

走当前索引就足够,而无需回表就能找到所有数据,就叫覆盖索引。

比如 key1 上有索引。(它是一个普通的二级索引)。

那么select key1 from s1 where key1 = 'a'

这种就叫覆盖索引。

表现就是explain时, Extra 那里显示 using Index

为啥无需回表?因为b+树子节点上,存了该索引字段和主键。而此时找的就是该字段,所以无需回表使用聚簇索引,这种就叫覆盖索引。

如果写成select * from s1 where key1 = 'a'

这种就不是覆盖索引,因为其他字段没有索引,它需要回表(回去使用聚簇索引,再找一遍数据)。表现就是explain时,Extra 那里 是null。

相关推荐
Arva .1 小时前
深分页与游标
数据库·oracle
idolao2 小时前
MySQL 5.7 安装教程:详细步骤+自定义安装+命令行客户端配置(Windows版)
数据库·windows·mysql
20年编程老鸟java+ai全栈2 小时前
mysql、pg、oracel数据库迁移避坑指南
数据库·mysql
Rsun045513 小时前
Redis中实现访问量计数
数据库·redis·缓存
西柚0013 小时前
Ubuntu22.04.5 + Docker + MySQL 5.7
mysql·docker·容器
天空属于哈夫克33 小时前
自动化素材中枢:实现云端文件与外部群消息的异步同步方案
数据库·oracle
Navicat中国3 小时前
Navicat Premium Lite 正式登录鸿蒙应用市场
数据库·华为·harmonyos·navicat
Yvonne爱编码3 小时前
数据库---Day 1 数据库基础
数据库·mysql·oracle
Ricky_Theseus4 小时前
数据库关系代数 - 连接操作
linux·数据库·算法
FL4m3Y4n4 小时前
MySQL索引原理与SQL优化
android·sql·mysql