MySQL之覆盖索引

什么是覆盖索引?

覆盖索引:查询时使用了索引,且需要返回的列,在改索引中已经全部能找到。

示例:有user表如下:

sql 复制代码
CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '技术主键',
  `name` varchar(100) DEFAULT NULL COMMENT '姓名',
  `age` int(11) DEFAULT NULL COMMENT '年龄',
  PRIMARY KEY (`id`),
  KEY `idx_1` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

sql1:select * from user where id=1; -- 覆盖索引

sql2:select id,name from user where name='小明'; -- 覆盖索引

sql3:select id,name,age from user where name='小明'; -- 非覆盖索引,需要回表查询

小结:覆盖索引是指查询使用了索引,返回的列必须在索引中能全部找到

使用id查询,直接走聚集索引查询,一次索引扫描,直接返回数据,性能高

如果返回的列中没有创建索引,就可能会触发回表查询,所以尽量避免使用select*

相关推荐
阳光九叶草LXGZXJ23 分钟前
达梦数据库-学习-69-DM9主备集群部署
linux·运维·服务器·数据库·sql·学习
jnrjian24 分钟前
Connect Microsoft Tools to Oracle Databases powerbi 之类的oracle 客户端
数据库·microsoft·oracle
北京恒星科通刘军34 分钟前
灾害监测预警系统中,应急疏散广播的“应急叫应”实际送达率与有效性研究
网络·数据库·人工智能
ShineWinsu40 分钟前
对于Redis:List类型的解析
数据库·c++·redis·链表·缓存·面试·list
问商十三载1 小时前
AI引擎生成式优化服务商怎么选?技术核验清单(附脚本)
数据库·人工智能·机器学习
TDengine (老段)1 小时前
集群从“能用“到“高可用“:副本、选主与故障切换到底怎么配
大数据·网络·数据库·物联网·oracle·时序数据库·tdengine
ly76891 小时前
ISR 收缩与 HW 推进:副本同步的边界条件与 UnderReplicated 排障
数据库·kafka·c#·linq·isr·hw·副本同步
Evand J1 小时前
【MATLAB例程】三维A*路径规划与TOA-AOA-TDOA融合定位算法。附下载链接
数据库·算法·matlab
Dxy12393102161 小时前
MySQL 条件注释语法
数据库·mysql
小小龙学IT1 小时前
Go 语言 database/sql 标准库深度解析:从连接池到驱动抽象
数据库·sql·golang