首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mysqlexplain命令查看执行计划

前言 使用explain命令可以查看一条查询语句的执行计划,这篇文章记录一下查询计划的各个属性的值极其含义. ? 那么我们按照图中的顺序逐个字段的看一下....本文采用官网的数据库样本,下载地址:[MySQL官方数据库](https://dev.mysql.com/doc/index-other.html) id 一组数据,表示任务被执行的顺序,序号越大的任务越先执行...,例如上文的第三个例子 table 查询的数据表,当从衍生表查数据时会显示 x 表示对应的执行计划id。...常见于使用非唯一索引即唯一索引的非唯一前缀进行的查找 eq_ref 唯一性索引扫描,对于每个索引键,表只有一条记录与之匹配。...Using filesort 表示使用了文件排序,即查询的排序无法通过索引来完成. 参考文章 MySQL官方文档 完。

1.9K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL Explain查看执行计划

    我们常常用到explain这个命令来查看一个这些SQL语句的执行计划查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。...(QEP:sql生成一个执行计划query Execution plan) mysql> explain select * from user; expain出来的信息有10列,分别是id、select_type...如将主键置于where列表MySQL就能将该查询转换为一个常量,system是const类型的特例,当查询的表只有一行的情况下,使用system NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引...要想强制MySQL使用或忽视possible_keys列的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。...SELECT后查看执行计划

    1.9K30

    MySQL(九)|如何查看执行计划(Explain)

    我们经常会使用Explain去查看执行计划,这个众所周知。但我在面试时问面试者,你用Explain主要是看什么?对方的回答大多是“查看是否有使用到索引”,很显然我对这个回答不太满意。...今天我们就来说一说Explain的“Type”和“Extra”。 一、Explain的“Type” ?...Explain的“Type” MySQL的官网解释为:连接类型(the join type)。它描述了找到所需数据使用的扫描方式。...非唯一索引,等值匹配,可能有多行命中 range:索引上的范围扫描,例如:between/in/> index:索引上的全集扫描 ALL最慢:全表扫描(full table scan) 二、Explain的...| 1分钟系列》 测试的MySQL版本为InnoDB 5.7.22

    2.2K51

    MySQL执行计划

    详细对MySQL执行计划每个字段的解释 1.概述 ​ 一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式...如果需要查询具体的执行计划,可通过在查询语句前追加EXPLAIN进行查看,例如: flink_data_qnh> EXPLAIN SELECT 1 +--+-----------+-----+-----...+--------+--------------+ ​ 除了以SELECT开头的查询语句,其余的DELETE、INSERT、REPLACE以及UPDATE语句前边都可以加上EXPLAIN这个词儿,用来查看这些语句的执行计划...,比如去重、排序之类的,比如我们在执行许多包含DISTINCT、GROUP BY、UNION等子句的查询过程,如果不能有效利用索引来完成查询,MySQL很有可能寻求通过建立内部的临时表来执行查询。...4.总结 ​ 以上介绍了EXPLAIN各个字段的含义,通过EXPLAIN可以查询出可以有效的帮助我们了解SQL脚本的执行情况。 参考 《MySQL是怎么样运行的》

    86020

    MySQLSQL执行计划详解

    MySQL执行计划是sql语句经过查询优化器后,查询优化器会根据用户的sql语句所包含的字段和内容数量等统计信息,选择出一个执行效率最优(MySQL系统认为最优)的执行计划,然后根据执行计划,调用存储引擎提供的接口...但是,在MySQL执行的时候,到底使用了一个什么样的执行计划,有没有用到索引。当数据规模比较大的时候,sql执行的时候,执行计划不同,会直接影响sql的执行速度。...MySQL我们在调试sql语句的时候,不会像我们写Java或者其他语言代码那样通过打断点的方式进行代码调试。这个时候,我们就需要通过查看执行计划来调试我们的sql了。...MySQL通过EXPLAIN来查看执行计划,我们写sql语句的时候,在语句之前加一个EXPLAIN就可以了。...No tables used 查询没有FROM子句 Not exists 查询的内容不存在 Plan isn't ready yet 优化程序尚未完成为在命名连接执行的语句创建执行计划时, 会出现此值

    3.1K20

    Mysql执行计划

    avgscoreFROMscWHEREsc.score = 2) tmp ON tmp.Sid = student.SId用执行计划分析...sqlAEXPLAIN sqlA分析执行计划的返回结果idid 是 select 的执行顺序,id 越大优先级越高,越先被执行,id 相同时下面的先执行.select_typeselect_type说明...SYSTEM系统,表仅有一行(=系统表)possible_keys预计可能使用的索引,在不和其他表进行关联的时候,查询表时可能使用的索引key实际查询的过程中使用的索引,显示 MySQL 在查询实际使用的索引...use index:从只使用索引树的信息而不需要进一步搜索读取实际的行来检索表的列信息。...执行计划详解 - 云+社区 - 腾讯云 (tencent.com)MySQL索引创建及使用_程序人生-CSDN博客_mysql建立索引

    1.3K10

    查看MySQL执行计划的几种方法以及格式说明

    我们知道,执行计划是关系型数据库诊断SQL性能问题很重要的一种手段,Oracle获取执行计划有很多种方式,不同方式有各自的优缺点,可以参考《查询执行计划的几种方法》。...同样,MySQL支持显示他的执行路径,参考了这篇博主文章《查看MySQL查询计划的方法和格式》,看下如何得到MySQL执行计划。     ...MySQL的查询计划是分析查询的重要方法,可以通过使用EXPLAIN语句来确认优化器将采取哪种查询计划,是否与你的预期一致。...可视化输出,可以通过MySQL Workbench可视化查看MySQL执行计划。通过点击Workbench的放大镜图标,即可生成可视化的查询计划,

    81630

    Mysql执行计划

    FROM sc WHERE sc.score = 2 ) tmp ON tmp.Sid = student.SId 用执行计划分析...sqlA EXPLAIN sqlA 分析执行计划的返回结果 id id 是 select 的执行顺序,id 越大优先级越高,越先被执行,id 相同时下面的先执行. select_type select_type...SYSTEM 系统,表仅有一行(=系统表) possible_keys 预计可能使用的索引,在不和其他表进行关联的时候,查询表时可能使用的索引 key 实际查询的过程中使用的索引,显示 MySQL 在查询实际使用的索引...use index:从只使用索引树的信息而不需要进一步搜索读取实际的行来检索表的列信息。...练习题 MySQL 执行计划详解 - 云 + 社区 - 腾讯云 (tencent.com) MySQL 索引创建及使用_程序人生-CSDN 博客_mysql 建立索引

    9510

    (4) MySQLEXPLAIN执行计划分析

    执行计划能告诉我们什么? SQL如何使用索引 联接查询的执行顺序 查询扫描的数据函数 二. 执行计划的内容 SQL执行计划的输出可能为多行,每一行代表对一个数据库对象的操作 1....ID值不同时,ID值越大代表优先级越高,则越先被执行 演示 可以看到上面的执行计划返回了3行结果,id列的值可以看作是SQL中所具有的SELECT操作的序号 由于上述SQL只有一个SELECT,...所以id全为1,因此,我们就要按照由上至下读取执行计划 按照我们的SQL语句,我们会认为执行顺序是a,b,c,但是通过上图可以发现,Mysql并不是完成按照SQL中所写的顺序来进行表的关联操作的 执行对表的执行顺序为...a,c,b,这是由于MySQL优化器会根据表的索引的统计信息来调整表关联的实际顺序 2....执行计划的限制 无法展示存储过程,触发器,UDF对查询的影响 无法使用EXPLAIN对存储过程进行分析 早期版本的MySQL只支持对SELECT语句进行分析

    91420

    查看MySQL执行计划的几种方法以及格式说明

    我们知道,执行计划是关系型数据库诊断SQL性能问题很重要的一种手段,Oracle获取执行计划有很多种方式,不同方式有各自的优缺点,可以参考《查询执行计划的几种方法》。...同样,MySQL支持显示他的执行路径,参考了这篇博主文章《查看MySQL查询计划的方法和格式》,看下如何得到MySQL执行计划。...MySQL的查询计划是分析查询的重要方法,可以通过使用EXPLAIN语句来确认优化器将采取哪种查询计划,是否与你的预期一致。 使用EXPLAIN有两种方式, ?...可视化输出,可以通过MySQL Workbench可视化查看MySQL执行计划。通过点击Workbench的放大镜图标,即可生成可视化的查询计划, ? ?

    2.3K10

    MySQL执行计划解读

    EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2....EXPLAIN PARTITIONS SELECT …… 用于分区表的EXPLAIN 执行计划包含的信息 ? id 包含一组数字,表示查询执行select子句或操作表的顺序 ?...f.const、system:当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表MySQL就能将该查询转换为一个常量 ?...MySQL执行计划的局限 •EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况 •EXPLAIN不考虑各种Cache •EXPLAIN不能显示MySQL在执行查询时所作的优化工作...•部分统计信息是估算的,并非精确值 •EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划

    1.4K10

    MySQL 执行计划详解

    ​ 在企业的应用场景,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句的执行效率。 ​...可以使用explain+SQL语句来模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。 ​...官网地址: https://dev.mysql.com/doc/refman/5.5/en/explain-output.html 1、执行计划包含的信息 Column Meaning id The...in (select d.deptno from dept d where d.dname = 'SALES'); ​ 3、id相同和不同的,同时存在:相同的可以认为是一组,从上往下顺序执行,在所有组,...--using filesort:说明mysql无法利用索引进行排序,只能利用排序算法进行排序,会消耗额外的位置 explain select * from emp order by sal; --using

    5.4K30

    MySQL 执行计划分析——Optimizer trace表

    Optimizer trace的基本使用,以及优化过程的含义 MySQL 执行计划分析 - Optimizer trace表 [TOC] 1....概述 对于 MySQL 5.6 以及之前的版本来说,查询优化器就像是一个黑盒子一样,你只能通过 EXPLAIN 语句查看到最后优化器决定使用的执行计划,却无法知道它为什么做这个决策。...在 MySQL 5.6 以及之后的版本MySQL 提出了一个 optimizer trace 的功能,这个功能可以让我们方便的查看优化器生成执行计划的整个过程。...而且支持在 session 开启,不影响其它 session,对系统的影响降到了最低。...参考 《MySQL是怎样运行的》 MySQL · 最佳实践 · 性能分析的大杀器—Optimizer trace Chapter 8 Tracing the Optimizer

    73610

    如何使用 EXPLAIN 精准查看执行计划

    在上一篇 如何使用慢查询快速定位执行慢的 SQL?...比如想要对comment_id=500000 或者user_id=500000的数据进行查询,数据表 comment_id 为主键,user_id 是普通索引,我们可以查看执行计划: EXPLAIN...比如我们想要对user_id=500000的评论进行查询,使用 EXPLAIN 查看执行计划: EXPLAIN SELECT comment_id, comment_text, user_id FROM...假设我们对product_comment表和 usre 表进行联查,关联条件是两张表的 user_id 相等,使用 EXPLAIN 进行执行计划查看: EXPLAIN SELECT * FROM product_comment...我们在查看执行计划的时候,通常希望执行计划至少可以使用到 range 级别以上的连接方式,如果只使用到了 all 或者 index 连接方式,我们可以从 SQL 语句和索引设计的角度上进行改进。

    89120

    MySQL执行计划详解

    MySQL执行计划详解 在使用MySQL进行数据库开发和运维过程,我们通常需要对执行计划进行优化。 在系统设计和架构,数据库是必不可少的一环。而优化数据库查询效率也是非常重要的一环。...MySQL是一个流行的关系型数据库管理系统。本文将介绍MySQL执行计划,以及如何使用执行计划来优化查询效率。 什么是执行计划执行计划MySQL查询优化器生成的一组指令,用于执行SQL语句。...在MySQL,我们可以通过explain命令来查看执行计划。...; Extra:包含MySQL执行计划的其他信息,例如是否使用了临时表、是否使用了文件排序等。...在执行计划,我们可以看到MySQL是如何使用索引的。如果MySQL执行计划没有使用索引,那么就需要考虑为查询添加索引了。 2.

    65910

    查看SQL执行计划的方法及优劣

    在 Oracle 的性能分析,很多时候需要对 SQL 进行分析,而最重要的就是对执行计划的分析。在本次的分享,我主要介绍常用的查看 SQL 执行计划的方法。...通常会用于问题诊断时对问题 SQL 的总体概况进行了解,因为可以查看 SQL 的多个执行计划及各执行计划的执行统计信息。...优势:可以在报告查看执行计划的执行统计信息; 劣势:需要生成报告;缺少执行计划的谓词信息;需要权限较高。...shared pool 还存在的执行计划信息。...dbms_xplan.display_awr('sql_id') 使用该方法可以查看 AWR 信息的信息,与 AWR 报告查看执行计划基本一致,但是无法看到执行计划的详细统计信息。

    1.2K20
    领券