慢查询
分析SQL查询语句的执行情况,只能解释select操作。
常用字段
-
select_type——查询中每个select子句的类型
-
SIMPLE:表示简单查询(不使用联合查询或子查询)
-
PRIMARY:如果包含关联查询或自查询,则表示最外层的查询语句;
-
UNION:表示联合查询的第2个或后面的查询语句;
-
-
type——查询类型,指明了MySQL在表中找到所需行的方式 ALL, index, range, ref, eq_ref, const, system, NULL(从左到右,性能从差到好)
-
ALL:全表扫描
-
index: 全索引扫描,即扫描全部的索引
-
range:范围扫描,利用索引选择待查询行
-
ref: 一种索引访问,也称索引查找,它返回所有匹配某个单个值的行。
-
eq_ref: 使用这种索引查找,最多只返回一条符合条件的记录。在使用唯一性索引或主键查找时会出现该值,非常高效。
-
const:基于主键或唯一索引查询,最多返回一条结果
-
system: 是const类型的特例,当查询对象表只有一行数据,使用system。
-
NULL: 在执行阶段不需要访问表。
-
-
possible_keys——可能使用的索引
-
key——实际使用的索引
-
key_len——使用的索引的长度。在不损失精确性的情况下,长度越短越好
-
ref——哪些字段或者常量被用来和key配合从表中查询记录
-
rows——mysql认为必须检查的用来返回请求数据的行数,是估算的行数
-
extra——其他信息
-
Using index:使用覆盖索引,表示查询索引就可查到所需数据,不用扫描表数据文件,往往说明性能不错。
-
Using Where:在存储引擎检索行后再进行过滤,使用了where从句来限制哪些行将与下一张表匹配或者是返回给用户。
-
Using temporary:在查询结果排序时会使用一个临时表,一般出现于排序、分组和多表 join 的情况,查询效率不高,建议优化。
-
Using filesort:对结果使用一个外部索引排序,而不是按索引次序从表里读取行,一般有出现该值,都建议优化去掉,因为这样的查询 CPU 资源消耗大。
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话