慢查询

分析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 @ 2024-08-20 00:33  zhegeMaw  阅读(29)  评论(0)    收藏  举报