之前一直对explain中的extra和type两个类型混淆。其实两者完全不同,type列和覆盖索引毫无关系,它只是表示这个查询访问数据的方式,或者说是MySQL查询行的方式。

我们使用一个例子来讲解这个extra列。下面的例子来自:https://blog.csdn.net/jeffrey11223/article/details/79100761

首先我们创建一个表

CREATE TABLE test_extra ( xxx varchar(20) NOT NULL, yyy varchar(20) NOT NULL, zzz datetime NOT NULL, aaa varchar(10) NOT NULL, PRIMARY KEY (xxx,yyy,zzz)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

通过show index from test_extra;语句来显示刚刚创建的表中的索引情况:

1. 第一种情况

这三个执行计划,extra字段的值是using index,意思是索引覆盖,查询的内容可以直接在索引中拿到。

2. 第二种情况

第一个查询语句的type使用ref,是因为匹配索引的最左前缀。extra为null,是因为什么?????????难道是因为直接使用索引就可以查询出来的原因吗???这里我没搞懂。。。

第二个查询语句的type使用All,是因为不符合最左前缀的理论,从而使用全盘扫描的方式查询数据,而extra的值是using where是因为,使用where来过滤条件。

3. 第三种情况

查询的内容在索引内,where条件符合索引最左前缀,extra是using where using index, 且type是ref,表面用了索引,索引覆盖了查询,using where表示发生了过滤

4. 第四种情况

查询的内容不再索引内,where条件为索引最左前缀,extra为null, type为ref,表明虽然用到了索引,但是没有索引覆盖,产生了回表。???回表问题需要搞一下。。。

mysql之执行计划——explain中的extra详解相关推荐

  1. MYSQL查看执行计划 Explain

    1. 概述: 执行计划的查看是进行数据库的sql语句调优时依据的一个重要依据,mysql的执行计划查看相对oracle简便很多,功能也相对简单很多的SQL语句都不能直接查看. 本文档整理了mysql执 ...

  2. mysql查看执行计划_MySql中如何使用 explain 查询 SQL 的执行计划

    explain命令是查看查询优化器如何决定执行查询的主要方法. 这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间去了解,因为可以学习到查询是如何执行的. 1.什么是MyS ...

  3. mysql 执行计划extra_mysql执行计划explain type和extra

    mysql执行计划,搞定type和extra就能优化大部分sql了.type为主,extra为辅. type: system表只有一行,MyISAM引擎. const常量连接,表最多只有一行匹配,通用 ...

  4. MySQL优化篇:执行计划explain中key_len计算方式

    概述 key_len表示索引使用的字节数,根据这个值可以判断索引的使用情况,特别是在使用联合索引的时候,判断该索引有多少部分被使用到非常重要. key_len的长度计算公式很重要(key_len越小, ...

  5. Mysql 数据库执行计划 EXPLAIN SELECT * FROM

    文章目录 EXPLAIN SELECT * FROM 是干嘛用的 ? EXPLAIN SELECT * FROM 各个字段的含义 1. id: 2.select_type: 3. table: 4.t ...

  6. mysql更改执行计划_11g中 connect by 语句执行计划改变

    从10.2.0.3升级到11.2.0.4的朋友,如果细心会发现,以下sql在11.2.0.4中执行效率变低(该sql主要是获取连接用户获取权限信息) select privilege#,level f ...

  7. MySQL—— MySQL的执行计划详解(Explain)

    文章目录 1.MySQL执行计划的定义 2.MySQL整个查询的过程 3.如何启动执行计划 4.Explain分析示例 4.explain的 两个变种(我的版本是5.7) 5.explain中的列 5 ...

  8. mysql 执行计划 什么用_简述MySQL的执行计划的作用及使用方法

    作为程序员,难免要和数据库打交道,一般情况下,我们不是DBA ,但是又要写很多SQL,因此SQL效率就成了很大的问题.关于SQL效率优化,除了要掌握一定优化技巧外, 还得有很多经验的积累,但是这里我们 ...

  9. mysql 分析执行计划的效率_MySQL执行计划分析

    大家好,我是anyux.本文介绍MySQL执行计划分析. 作用 通过explain或desc命令将优化器选择后的执行计划截取出来,便于管理和判断语句的执行效率 获取执行计划 desc SQL语句 ex ...

最新文章

  1. 您对TOP Server的德语、中文和日语语言支持了解吗?(二)
  2. 如何使用jsp自定义标签 JspTag 使用入门
  3. 【Linux】 linux的进程系统一点补充
  4. Android 新闻客户端
  5. 拦截器Intercepter和过滤器Filter的比较
  6. vsflexgrid单元格换行后自动使用行高_Excel表格不会换行?10个超实用Excel小技巧,用了都说好!...
  7. c# asp.net mvc 开发的正方教务助手(二)
  8. python堆栈反向输出列表_python - IPython:将Python脚本的输出重定向到文件(如bash) - 堆栈内存溢出...
  9. python定时任务apschedule_APScheduler(python 定时任务框架)最简单使用教程
  10. 拒绝平庸——浅谈WEB登录页面设计
  11. java 调试js_Java与JS代码调试技巧
  12. 第四届“传智杯”全国大学生IT技能大赛(练习赛)【完结】
  13. Java数组排序(选择排序)
  14. 开源分销系统java_Java版Spring Boot Spring Cloud B2B2C电子商务-分销系统
  15. U盘文件夹变成exe应用程序
  16. i7 1165g7和i7 10510u哪个好
  17. 超大气自适应北漂鱼VP视频解析源码+带后台管理
  18. coap协议说明及函数使用
  19. Python 绘画excel分组柱状图(懒人学习)
  20. @component的注解

热门文章

  1. 一个菜鸟关于winrar密码无法秒破的…
  2. 【博客插件】Live2d看板娘放到自己的博客上(黑白猫猫+恶魔少女)
  3. Android集成FFmpeg
  4. 为什么我不建议你给领导回复“好的”?
  5. Day08 红帽Linux — 1创建、查看、编辑文本文件
  6. python堆排序算法代码_python堆排序算法实例代码
  7. 泛域名ssl证书,sectigo便宜通配符证书普及计划
  8. 【UML】UML图--交互图(时序图和协作图)
  9. c语言绝对值题目,初中数学绝对值的练习题(整理)
  10. WinAPI: OffsetRect - 移动矩形