慢查询

分析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 资源消耗大。

参考:https://zhuanlan.zhihu.com/p/51771446

posted @   zhegeMaw  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示