如何使用MYSQL的EXPLAIN语句进行查询分析?

面试

1.在sq|语句前面加上explain,然后执行

2.分析输出,关注type,key,rows,extra这几个参数

type常见的值有:ref >range > index>all。

refrange,index都表示用上了索引。

ref表示使用上了非唯一索引,range常见于范围查询,表示扫描索引的一个范围;index表示扫描索引中的所有行;

all表示全表扫描,性能最差。

key表示用到的索引的名称;

rows表示要读取的行数,越小越好

extra会展示一些其它信息,例如using index(表示应用了覆盖索引),using filesort(使用了文件排序)

优化例子:建立联合索引,使索引里面包含要排序的所有字段,从文件排序优化到了索引排序。

id select_type table type key key_len ref rows Extra
1 SIMPLE user ref idx_age 5 const 1 Using index

id=1:单条简单查询,只有一层

select_type=SIMPLE:无关联子查询、无 UNION

table=user:操作表是 user

type=ref:使用普通索引等值匹配,性能良好

key=idx_age:本次查询真正使用了 age 索引

key_len=5:int 类型索引占用 5 字节

ref=const:匹配条件是常量 18

rows=1:预估只扫描 1 行数据

Extra=Using index:覆盖索引,不用回表,性能最优

相关推荐
程序猿乐锅1 小时前
从0-1一文详解RabbitMQ
java·分布式·后端·中间件·rabbitmq·ruby
考虑考虑4 小时前
JDK26中的List.ofLazy()
java·后端·java ee
小蒜学长4 小时前
基于SpringBoot的公寓报修管理系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·公寓报修管理系统·多角色协同
for_ever_love__5 小时前
MySQL 主从复制讲透:binlog 原理、搭建步骤与读写分离
java·数据库·mysql·binlog·读写分离·原理·主从复制
云浪5 小时前
Go源码分析:搞懂 Go 是如何实现堆的
后端·go·源码阅读
小π军7 小时前
操作系统面试题
java·linux·服务器
倔强的石头1067 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
java·运维·开发语言
Shaoshing8 小时前
ThreadLocal
java·jvm·threadlocal
写后端的胖头鱼8 小时前
一文详解CAS
java·jvm·spring·cas·乐观锁·自旋