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*

相关推荐
会编程的土豆几秒前
Gin 框架第一课:从 0 搞懂 Gin 最基础的路由
数据库·sql·gin·goland
雨浓YN2 分钟前
GKTGD 工业监控系统-02MySQL 数据库技术文档(类库:NET8_SQLData)
数据库·wpf
dFObBIMmai2 分钟前
JavaScript中对象生命周期与垃圾回收的引用关系
jvm·数据库·python
2401_824697662 分钟前
Go语言怎么格式化时间_Go语言time.Format教程【详解】
jvm·数据库·python
2303_821287383 分钟前
HTML函数在低背光键盘上编写困难吗_输入设备舒适度说明【介绍】
jvm·数据库·python
爱喝水的鱼丶3 分钟前
SAP-ABAP:ABAP Development Tools(ADT)安装配置学习分享教程(四篇连载)第四篇:ADT连接故障排查与环境迁移教程
运维·开发语言·数据库·学习·sap·abap
2301_783848654 分钟前
防范SQL注入的SQL编码规范_禁用动态拼接字符串语句
jvm·数据库·python
weixin_444012935 分钟前
Angular 表单中基于下拉选择动态启用字段必填校验的完整实现
jvm·数据库·python
zjy277776 分钟前
CSS解决浮动元素导致的布局闪烁_稳定容器布局高度
jvm·数据库·python
2501_901006477 分钟前
MySQL主从复制过程中怎么增加从库_利用mysqldump快速扩容从库
jvm·数据库·python