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

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服务器将在存储引擎检索行后再进行过滤 Using temporary:表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询...在执行查询时所作的优化工作 • 部分统计信息是估算的,并非精确值 • EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划

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

    Mysql中explain命令查看执行计划

    前言 使用explain命令可以查看一条查询语句的执行计划,这篇文章记录一下查询计划的各个属性的值极其含义. ? 那么我们按照图中的顺序逐个字段的看一下....本文采用官网的数据库样本,下载地址:[MySQL官方数据库](https://dev.mysql.com/doc/index-other.html) id 一组数据,表示任务被执行的顺序,序号越大的任务越先执行...5 UNION 出现在union后的查询语句中 6 UNION RESULT 从UNION中获取结果集,例如上文的第三个例子 table 查询的数据表,当从衍生表中查数据时会显示 x 表示对应的执行计划...常见于主键或唯一索引扫描 const,system 当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问 .NULL:MySQL在优化过程中分解语句,执行时甚至不用访问表或索引 possible_keys...将用where子句来过滤结果集 Using temporary 表示mysql在这个查询语句中使用了临时表.

    1.9K10

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

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

    80930

    MySQL执行计划

    这就可以通过explain关键字来查看。 2. 能干吗?...执行计划 4. 执行计划包含的信息: 如上图,执行计划查出来后包含如下信息: id:select 查询的序列号,包含一组数字,表示查询中执行select 子句或表的读取顺序。...包含以下内容: extra 含义 using filesort 说明MySQL会对数据使用一个外部的索引排序,而不是用表内的索引顺序进行读取,这种文件内排序是很费时的。...col2_col3,执行select col1 from t1 where col1 = 'a' order by col3,我们建的复合索引是三个列,而这条sql中只使用了两个,col2没了,看它的执行计划就会发现...using temporary MySQL在对查询结果排序时新建了一个临时表处理数据,常见于order by和group by,这种情况性能更差。

    1K20

    查看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

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

    定位了查询慢的 SQL 之后,我们就可以使用 EXPLAIN 工具做针对性的分析,比如我们想要了解 product_comment 和 user 表进行联查的时候所采用的的执行计划,可以使用下面这条语句...比如想要对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 语句和索引设计的角度上进行改进。

    87520

    详解Mysql执行计划explain

    * from user_feedback;##查看执行计划中的sql性能 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HjDhwDJW-1590054590264)(...2128cfbc7746ac9e2000701570429874.png)] 第一个查询是全表扫描,第二个是索引扫描: 区别在于type:all是全表扫描 index 通过索引扫描 或者在查询中输入需要查看执行计划的语句...选择解释标签,就可以查看到sql的执行计划了 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AZbbSgxi-1590054590266)(https://graph.baidu.com.../resource/21241cc450985d9b7930501570421788.png)] 解释 1、ID、table id:Query Optimizer 所选定的执行计划中查询的序列号 id相同时...• 部分统计信息是估算的,并非精确值 • EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划

    93720

    MySQL执行计划(explain)分析

    MySQL执行计划(explain)分析 EXPLAIN支持对SELECT、UPDATE、INSERT、REPLACE、DELETE分析 执行计划能知道: SQL如何使用索引 联接查询的执行顺序 查询扫描的数据行数...DEPENDENT UNION:当UNION作为子查询时,第二或是第二个后的查询的SELECTTYPE值 UNION RESULT:UNION产生的结果集 DERIVED:出现在FROM子句中的子查询 用途:查看查询方法...TABLE列: 输出数据行所在的表的名称 由ID为M,N查询union产生的结果集 或由ID为N的查询产生的结果 用途:查看数据来源 PARTITIONS列 对于分区表,显示查询的分区ID 对于非分区表...通过索引统计信息,估算的所需读取的行数 ROWS值的大小是个统计抽样结果,并不十分准确 FILTERED列 表示返回结果的行数占需读取行数的百分比 FILTERED列的值越大越好 依赖于统计信息 - 执行计划的限制...查看是否存在对于同一订单同一商品的重复评论。

    94640

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

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

    1.2K20

    执行计划--mysql详解(七)

    上篇文章说了,mysql优化器会从cpu和io成本来考虑查询的消耗,possible key来计算全表和索引的成本,选择成本最小的,子查询有物化和semi-join半连接的方式优化,物化会优先哈希索引memory...Mysql优化器-mysql详解(六) Mysql在计算成本之后生成执行计划,用explain来查看,会返回很多列。 Table:查询的表名称,查询几张表显示几行。...如果是子查询,也会显示两行,但id会是1和2,但凡是有例外,前面说过mysql优化器会优化子查询优化成半连接,这时候我们如何知道他是物化还是优化成半连接呢,可以通过id来判断,如果id一致,则和上面的连接查询一样...Possible key:就是我们前面说的mysql优化器在选择执行计划之前,会先把所有可能用到的索引全部计算一下成本。 Key:真实用到的索引。...还可以在执行完之后,执行show warnings会看到mysql优化器优化后的sql语句。

    65330

    mysql索引及执行计划

    什么是索引 类似于一本书的目录,加速查询,会影响到锁的应用 种类 BTREE :在mysql应用99.9% innodb 做范围查询 rtree : mongodb FULLTEXT :对于大字段...BTREE查找算法演变 B-TREE 普通BTREE B+TREE 叶子节点双向指针 B++TREE 枝节点的双向指针 mysql中如何使用BTREE b树分三层 聚簇索引构建过程 leaf 叶子 存储数据行时就是有序的...的范围+指针 构建枝节点 可以优化以id列作为条件作为查询 group by , order by 都可以覆盖到 一个b树最少要有两层结构,根和叶子构成 b树 以数据页加载数据 每个数据页都是一个范围 mysql...like %% 就会走到部分列的索引, 会在查询条件 不等值条件 或者 大于或小于 like %%, 就不会在下一个查询条件走联合索引的下一列 一定要遵循最左原则 查询条件中一定要包含最左列条件 查看消耗代价...可以通过format=json进行查看 explain format=tree select * from world.city where id>111; 应用场景 1新业务上线 可以在开发环境和测试环境测试使用

    1.3K31
    领券