(面试题)怎么分析MySQL的执行计划

142 阅读1分钟

在我们SQL语句前面加一个explain关键字就可以查看执行计划,最主要看的就是4个字段

  • type:索引检索类型。效率从高到低依次是

    • const,代表的就是主键索引 或者 唯一索引,并且查询条件是常量。这种情况下最多查到1条记录,查询效率非常高,比如id = 1
    • ref,走了普通索引
    • range,进行了范围查询,并且用上了索引
    • all,全表扫描,这个性能是最差的,如果表中数据量大,会特别耗时
  • key:当前实际使用的索引是哪个

  • rows:本次扫描的行数,越少越好。如果优化后扫描行数降低,说明优化效果不错

  • extra:扩展信息

    • using index,出现这个表明发生索引覆盖,我们所有数据在索引树上就有,不需要回表。
    • using index condition,出现这个表明出现索引下推。这是一种优化手段,先在索引树上筛选完后再去回表
    • using filesort,出现这个表明使用了文件排序,因为文件排序非常慢,所以这个肯定要优化