zfxcms ^回到顶部

您的当前位置:首页 > 最新IT资讯 > MySQL > mysql优化-排查sql问题方法

mysql优化-排查sql问题方法

所属分类: MySQL   2020-03-18 16:41:15  编辑:admin  浏览次数 618 次

  1. explain

image.png

image.png

image.png

排查慢的问题,就是全表扫描,没有索引,所以加索引

image.png

explain详解

Select_type 查询类型

Simple  简单查询,不包含union及子查询

Primary 最外层的select查询

Union  union中第二个或随后的select查询,不依赖于外部查询的结果集

Dependent union 依赖于外部查询的结果集

Subquery 子查询第一个select子句,不依赖于外部查询的结果集

Dependent  Subquery  依赖于外部查询的结果集

Drived  from子句中有子查询,mysql会递归这些子查询,放入临时表

Uncacheable union union中的第二或随后的select子句,不可缓存的子查询

Uncacheable subquery 结果集中不能被缓存的子查询,必须重新为外层查询的每一行进行评估

Type 连接使用的类型

System  表只有一行

Const   表中只有一条

Eq_ref  表中只有一条

Ref  不能基于关键字选择单个行,可能查找到多个符合条件的行,ref会使用索引和某个常量或者多表查询的结果值进行比较

Ref_or_null 在ref的初次查找的基础上,对null的结果集进行二次查找

Index_merge  索引合并优化被使用了

Unique_subquery 在in查询中 使用唯一索引  in ( select pid from tablea )

Index_subquery  在in查询中 使用非唯一索引

Range 只检索给定范围的行,使用一个索引来选择行 ( = > <  is null between in )用常量比较关键字列

Index 全表扫描,避免了排序,按照索引次序来扫描

All  从头到尾全表扫描

 

Possible_keys 该表中有哪些索引有助于查询

Key  实际选择使用的索引,如果为null,没有使用索引

Key_len 使用的索引的长度,越短越好

Ref  索引的哪一列被使用了

Rows  返回请求数据的行数

Extra  不能使用索引,需要先对此项进行优化

Using temporary  使用临时表  (group by   order by )

Using filesort 会对结果集使用外部索引排序,可能是在内存中或者磁盘上进行排序(文件排序)

 

2.慢查询

慢查询优化思路:建立联合索引,根据索引最左原则,对结果集进行优化(不建议用using index做强制索引)

在mysql配置文件中

image.png

image.png

image.png

3.慢查询分析工具一

image.png

4.慢查询分析工具二

image.png

image.png

image.png

image.png

image.png

随笔文章检索

随笔文章目录