什么是覆盖索引 ?

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

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

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

这种就叫覆盖索引。

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

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

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

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

相关推荐
七度黑光13 小时前
用 openclaw 给故障复盘打分:质量审核自动化实践
运维·服务器·前端·数据库·自动化
qq_2837200513 小时前
MySQL技巧(九): Binlog 完整格式解析(ROW 模式,默认)
mysql·binlog·数据恢复
华科易迅15 小时前
Spring 事务(注解)
java·数据库·spring
Java面试题总结15 小时前
MySQL篇 索引失效
数据库·mysql
last demo15 小时前
mysql
运维·数据库·mysql·oracle
kevin_cat16 小时前
oracle 扩展表空间
数据库·oracle
花间相见17 小时前
【MySQL面试题】—— MySQL面试高频问题汇总:从原理到实战,覆盖90%考点
数据库·mysql·面试
高梦轩18 小时前
MySQL 数据库备份与恢复
数据库·oracle
一直都在57218 小时前
Redis(二)
数据库·redis·缓存
TDengine (老段)18 小时前
TDengine IDMP 工业数据建模 —— 属性
大数据·数据库·人工智能·时序数据库·tdengine·涛思数据