什么是覆盖索引 ?

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

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

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

这种就叫覆盖索引。

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

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

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

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

相关推荐
t***4423几秒前
MySQL 导出数据
数据库·mysql·adb
翔云12345635 分钟前
MySQL主从库复制中,主库如何查找对应日志文件位置
数据库·mysql
Mr_star_galaxy2 小时前
【MySQL基础】视图和权限管理
数据库·mysql
lipiaoshuigood3 小时前
MySQL 数据出海之数据同步方案
数据库·mysql
笨蛋不要掉眼泪3 小时前
Nacos配置中心详解:核心用法、动态刷新与经典面试题解析
java·数据库·后端
@@神农3 小时前
PostgreSQL-SQL语句的执行过程(一)
数据库·sql·postgresql
Andy Dennis5 小时前
一文漫谈数据库存储之索引(B+, B-link, LSM tree等)
数据库·b+树·lsm-tree
CHANG_THE_WORLD5 小时前
字符串定义的汇编分析
汇编·数据库
数据知道5 小时前
PostgreSQL:如何通过progres_fdw跨库关联查询?
数据库·postgresql
v***57005 小时前
MYSQL 创建索引
数据库·mysql