mysql-执行计划

  1. 执行计划可以帮助我们看到sql查询的具体过程,我们可以根据此过程评估该sql的执行效率。
  2. 语法
    EXPLAIN <DQL>
    
  3. 字段分析
    1. id

      1. select查询的序列号,标识执行的顺序
        • ID相同,执行顺序由上至下
        • id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行
    2. select_type

      1. SIMPLE
        1. 简单的select查询,查询中不包含子查询或者union
           `案例`
              EXPLAIN SELECT * FROM emp WHERE deptno = 30 
          
      2. PRIMARY
        1. 查询中包含子部分,最外层查询则被标记为primary
         `案例`
            EXPLAIN SELECT * FROM emp  
            WHERE deptno = 
            (SELECT deptno FROM dept  WHERE dname='SALES') ;
        
         描述
            EXPLAIN SELECT * FROM emp   WHERE deptno = () ;   select_type 为 primary
        
      3. SUBQUERY/MATERIALIZED
        1. SUBQUERY
          1. 表示select 或 where 列表 中包含了子查询
          案例
              EXPLAIN SELECT * FROM emp  
              WHERE deptno = (SELECT deptno FROM dept WHERE dname='SALES') ;
          描述 
              (SELECT deptno FROM dept  WHERE dname='SALES')内是一个子查询 ,而此查询
               select_type = SUBQUERY
          注意
               where条件中使用 in 不是子查询 而是普通查询
          
        2. MATERIALIZED(where 后面 in 条件的子查询)
      4. UNION(union 中第二个或后面的select 语句)
      5. UNION RESULT
    3. table( 查询涉及到的表)

      • 直接显示表名或者表的别名
      • <union M,N> 由 ID 为 M,N 查询 union 产生的结果
      • <subqueryN> 由ID为N 查询产生的结果
    4. type

      1. 访问类型,SQL查询优化中一个很重要的指标,结果值从好到坏依次是 system > const > eq_ref > ref > range > index > All
        1. system
          1. 系统表,少量数据,往往不需要进行磁盘IO

          1. 特点:
            从系统库MYSQL的系统里查询数据,访问类型为 system ,这些数据已经加载到内存中
            不需要磁盘IO,这类扫描速度是最快的
        2. const(常量连接)

          1. 特点
            命中主键(primary key) 或者唯一 (unique)索引被连接的部分是一个常量(const)值
          2. 列子
            命中主键
            命中唯一
        3. eq_ref

          1. 主键索引(primary key )或者 非空唯一索引(unique not null)等值扫描
          2. 特点
            join 查询
          3. 列子
            命中主键 (primary key)索引 一对一等值连接
            非空唯一 (unique not null)索引 一对一等值连接
        4. ref

          1. 非主键非唯一索引等值扫描
          2. 特点
            一对多等值连接,由eq_req 降级为 ref
        5. range(范围扫描)

          1. 特点
            索引上的范围查询,他会在索引上扫码特定范围内的值
            between 、in 、>、<、>=、<=都是典型的范围(range)查询
          2. 例子
            命中主键
        6. index(索引树扫描)

          1. 特点
            需要通过扫描 索引上的全部数据 来获取结果,他仅比全表扫描快一点
          2. 例子
            全表查询
        7. ALL全表扫描(full table scan )

          1. 特点
            需要通过扫描非索引上的全部数据来获取结果
          2. 例子
            全表直接查询
            查询不是索引的字段
    5. possible_keys

      1. 查询过程中有可能使用到的索引
    6. key

      1. 实际使用的索引,如果为 null ,则没有使用索引
    7. row

      1. 根据表统计信息或者索引选用情况,大致估算处找到所需记录所需要读取的行数, 越小越好
    8. filtered

      1. 表示返回结果的行数 占读取行数的百分比, filtered 的值越大越好
    9. extra

      1. Using filesort
        MYSQL 对数据使用一个外部的文件内容进行了排序,而不是按照表内的索引进行排序读取
      2. Using temporary
        使用临时表保存中间结果,也就是说 mysql在对查询结果排序时使用了临时表,常见于 order by 或者 group by
      3. Using index
        表示 SQL操作中使用了覆盖索引(Covering index), 避免了访问表的数据行,效率高
      4. Using index condition
        表示SQL 操作命中了索引,但不是所有的列数据都在索引树上,还需要访问实际的行记录。
      5. Using where
        表示SQL操作使用了 where过滤条件
      6. select tables optimized away
        基于索引优化 MIN/MAX操作 或者MyISAM存储引擎优化count(*)操作,不必等到执行阶段在井陉计算,查询执行计划生成的阶段即可完成优化
      7. Using join buffer(Block Nested Loop)
        表示SQL操作使用了关联查询或者 子查询,且需要进行嵌套循环计算
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,874评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,102评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,676评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,911评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,937评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,935评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,860评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,660评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,113评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,363评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,506评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,238评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,861评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,486评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,674评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,513评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,426评论 2 352