美文网首页
Mysql执行计划

Mysql执行计划

作者: 黄靠谱 | 来源:发表于2019-01-18 16:59 被阅读17次

    参考

    http://blog.csdn.net/mr253727942/article/details/51201222

    执行计划分析

    通过再查询SQL前面添加Explain关键字,来实现查看 执行计划
    EXPLAIN select * from wx_ib where id=500;

    • select_type
      每个select子句的类型,主要分成下面几种:
      a. SIMPLE:查询中不包含任何子查询或者union
      b. PRIMARY:查询中包含了任何复杂的子部分,最外层的就会变成PRIMARY
      c. SUBQUERY:在SELECT或者WHERE列表中包含了子查询
      d. DERIVED:在FROM中包含了子查询
      e. UNION:如果第二个SELECT出现在UNION之后,则被标记为UNION,如果UNION包含在FROM子句的子查询中,外层SELECT会被标记为:DERIVED
      f. UNION RESULT从UNION表获取结果的select

    • type
      是指MySQL在表中找到所需行的方式,也就是访问行的”类型”,从a开始,效率逐渐上升:
      a:all:全表扫描,效率最低
      b:index:index会根据索引树遍历
      c:range:索引范围扫描,返回匹配值域的行。
      d:ref:非唯一性索引扫描,返回匹配某个单独值的所有行。一般是指多列的唯一索引中的某一列。
      e:eq_ref:唯一性索引扫描,表中只有一条记录与之匹配。
      f:const、system:主要针对查询中有常量的情况,如果结果只有一行会变成system
      g:NULL:显而易见,既不走表,也不走索引

    • possible_keys
      possible_keys列预估了mysql能够为当前查询选择的索引,这个字段是完全独立于执行计划中输出的表的顺序,意味着在实际查询中可能用不到这些索引。
      如果该字段为空则意味着没有可使用的索引,这个时候你可以考虑为where后面的字段建立索引

    • key
      这个字段表示了mysql真实使用的索引。如果mysql优化过程中没有加索引,可以强制加hint使用索引

    性能明细查看

    show profiles;(如果未开启的话,set profiling=1;)
    可以查看具体的耗时信息

    相关文章

      网友评论

          本文标题:Mysql执行计划

          本文链接:https://www.haomeiwen.com/subject/qtondqtx.html