美文网首页PHP开发
mysql explain详解

mysql explain详解

作者: hankviv | 来源:发表于2017-12-13 11:10 被阅读0次
    用explain分析后的数据

    select Type:

    SIMPLE : 查询中不包含子查询或者UNION.

    PRIMARY: 查询中包含任何复杂的子部分,最外层查询被标记为PRIMARY.

    SUBQUERY: 在SELECT或者WHERE列表中包含了子查询,该子查询被标记为SUBQUERY.

    DERIVED: 在FROM列表中包含的子查询被标记为DERIVED.

    UNION: 若第二个SELECT出现在UNION之后,则被标记为UNION;若UNION包含在FROM子句的子查询中,则被标记为DERIVED.

    UNION RESULT 从UNION表获取结果的SELECT被标记为UNION RESULT.

    Extra:

    using where:表示需要回文才能找到内容,优化方案是尽量走索引。

    using index:表示直接走索引就查出了数据。

    type:

    表示MySQL执行查询时是如何获取所需行的,又称”访问类型”

    ALL: Full Table Scan,MySQL扫描全表以找到匹配的行.

    index: Full Index Scan,index与ALL的区别在于index只遍历索引树

    range: 索引范围扫描,对索引的扫描开始于某一点,返回匹配值域的行.

    ref: 非唯一性索引扫描,返回匹配某个值的所有.

    eq_ref: 唯一性索引扫描,对于某个索引键,表中只有一条记录与之匹配,常见于主键或者唯一索引查询.

    const,system: 当MySQL优化部分查询,并转换为一个常量时,使用这些类型访问.如将主键置与where列表中,MySQL就能将该查询替换为一个常量.需要注意的是system是const的特殊类型,当查询的表只有一行的情况下使用system.

    NULL: MySQL在优化过程中分解语句,执行时不用访问表或者索引.

    优化器会在索引存的情况下,通过符合 RANGE 范围的条数和总数的比例来选择是使用索引还是进行全表遍历

    相关文章

      网友评论

        本文标题:mysql explain详解

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