如何使用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覆盖索引,不用回表,性能最优

相关推荐
mifengxing18 小时前
LeetCode 41.缺失的第一个正数|Hard题O(n)+O(1)最优解法深度解析
java·算法·leetcode·排序算法
DLYSB_20 小时前
API 网关流量洪峰与突发 CC 攻击:我用 Go 写了个“现场物理防御哨兵”,把故障响应压缩到秒级
开发语言·后端·golang·报警灯
markinmarkin20 小时前
Spring 中Bean 的作用域有哪些?
java·后端·spring
橙子家21 小时前
使用方法 ToDictionary() 来优化查询时间复杂度:O(N*M) -> O(1*M)【C# 基础】
后端
山荷枝21 小时前
Java学习第十天
java·学习
matlabgoodboy21 小时前
计算机毕设代做|Java Python Matlab APP 全套开发设计
java·python·课程设计
IT_陈寒21 小时前
我又被JavaScript的隐式类型转换坑了
前端·人工智能·后端
用户83562907805121 小时前
Python Word 转 PDF 和 PDF 转 Word 指南
后端·python
用户8356290780511 天前
如何使用 Python 加密和保护 Word 文档
后端·python
他们叫我秃子1 天前
前端开发转 Go 全栈(五):终于遇到熟人了,Go 的闭包和高阶函数原来这么像 JavaScript
前端·后端·go