mysql explain详解

用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详解 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些S...
    鲍陈飞阅读 5,589评论 0 1
  • 对SQL查询语句执行explain命令可以得到SQL语句的执行计划。 id:序号,表示查询中执行select子句或...
    yuanzicheng阅读 4,208评论 0 50
  • MySQL不权威总结 欢迎阅读 本文并非事无巨细的mysql学习资料,而是选择其中重要、困难、易错的部分进行系统地...
    liufxlucky365阅读 7,552评论 0 26
  • 关键词: mysql explain sql优化 执行计划 简述:explain为mysql提供语句的执行计划信息...
    气球到处飞阅读 31,283评论 0 20
  • MySQL EXPLAIN命令是查询性能优化不可缺少的一部分,该文主要讲解explain命令的使用及相关参数说明。...
    高广超阅读 79,347评论 2 98