MySQL-慢sql语句分析

explain分析sql语句

如果一条sql执行很慢的话,我们通常会使用mysql自动的执行计划explain来去查看这条sql的执行情况。

语法格式:

效果如下 

各字段含义

type:表示连接类型,性能由好到差的连接类型为NULL、system、const、eq_ref、ref、range、index、all 。

  1. NULL:这条sql没有使用到表
  2. system:查询系统中的表
  3. const:根据主键查询
  4. eq_ref:主键索引查询或唯一索引查询
  5. ref:索引查询
  6. range:范围查询
  7. index:索引树扫描
  8. all:全盘扫描

possible_key:当前sql可能会使用到的索引

key:当前sql实际命中的索引

key_len:索引占用的大小

Extra:额外的优化建议

  1. Using where; Using Index:查找使用了索引,需要的数据都在索引列中能找到,不需要回表查询数据
  2. Using index condition:查找使用了索引,但是需要回表查询数据

总结

MySQL-慢sql语句分析_第1张图片面试参考回答

面试官:那这个SQL语句执行很慢, 如何分析呢?

候选人:如果一条sql执行很慢的话,我们通常会使用mysql自动的执行计划explain来去查看这条sql的执行情况,比如在这里面可以通过key和key_len检查是否命中了索引,如果本身已经添加了索引,也可以判断索引是否有失效的情况,第二个,可以通过type字段查看sql是否有进一步的优化空间,是否存在全索引扫描或全盘扫描,第三个可以通过extra建议来判断,是否出现了回表的情况,如果出现了,可以尝试添加索引或修改返回字段来修复

你可能感兴趣的:(mysql,sql,数据库)