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

怎么查看mysql的执行计划

查看MySQL执行计划的基础概念

MySQL的执行计划是数据库管理系统(DBMS)在执行SQL查询时所采取的步骤和方法。通过查看执行计划,可以了解MySQL是如何处理查询的,包括表的访问方式、连接顺序、索引使用情况等。这对于优化查询性能非常有帮助。

查看MySQL执行计划的方法

使用EXPLAIN关键字

EXPLAIN是MySQL提供的一个非常有用的工具,可以在执行SQL查询之前查看其执行计划。基本语法如下:

代码语言:txt
复制
EXPLAIN SELECT * FROM table_name WHERE condition;

例如:

代码语言:txt
复制
EXPLAIN SELECT * FROM users WHERE age > 30;

使用EXPLAIN ANALYZE

EXPLAIN ANALYZE不仅会显示执行计划,还会实际执行查询并显示实际的执行时间和其他统计信息。基本语法如下:

代码语言:txt
复制
EXPLAIN ANALYZE SELECT * FROM table_name WHERE condition;

例如:

代码语言:txt
复制
EXPLAIN ANALYZE SELECT * FROM users WHERE age > 30;

执行计划的相关优势

  1. 性能优化:通过查看执行计划,可以识别出查询中的瓶颈,如未使用的索引、全表扫描等,从而进行相应的优化。
  2. 理解查询过程:执行计划提供了查询执行的详细步骤,有助于理解MySQL是如何处理查询的。
  3. 调试复杂查询:对于复杂的SQL查询,执行计划可以帮助开发者快速定位问题所在。

执行计划的类型

执行计划通常包括以下几种类型:

  1. 全表扫描(ALL):MySQL会扫描整个表来找到匹配的行。
  2. 索引扫描(index):MySQL会使用索引来查找数据。
  3. 范围扫描(range):MySQL会使用索引来查找一个范围内的值。
  4. 索引合并(index_merge):MySQL会合并多个索引的结果。
  5. 子查询(subquery):MySQL会执行子查询来获取数据。

应用场景

  • 性能调优:当查询性能不佳时,可以通过查看执行计划来找出问题并进行优化。
  • 新查询设计:在设计新的查询时,可以通过查看执行计划来确保查询的高效性。
  • 复杂查询调试:对于复杂的SQL查询,执行计划可以帮助开发者快速定位问题。

可能遇到的问题及解决方法

问题:为什么执行计划显示全表扫描?

原因

  • 没有合适的索引。
  • 查询条件不适合使用索引。

解决方法

  • 创建合适的索引。
  • 修改查询条件,使其适合使用索引。

例如,假设我们有一个表users,其中有一个字段age,我们可以创建一个索引:

代码语言:txt
复制
CREATE INDEX idx_age ON users(age);

然后再查看执行计划:

代码语言:txt
复制
EXPLAIN SELECT * FROM users WHERE age > 30;

问题:为什么执行计划显示索引未被使用?

原因

  • 查询条件不适合使用索引。
  • 数据分布不均匀,导致索引效率低下。

解决方法

  • 修改查询条件,使其适合使用索引。
  • 分析数据分布,考虑是否需要重新设计索引。

参考链接

通过以上方法和建议,你可以有效地查看和优化MySQL的执行计划,从而提升数据库的性能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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需要使用临时表来存储结果集,常见于排序和分组查询 Using filesort:MySQL中无法利用索引完成的排序操作称为...SELECT后查看执行计划。

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

    我们经常会使用Explain去查看执行计划,这个众所周知。但我在面试时问面试者,你用Explain主要是看什么?对方的回答大多是“查看是否有使用到索引”,很显然我对这个回答不太满意。...Explain中的“Type” MySQL的官网解释为:连接类型(the join type)。它描述了找到所需数据使用的扫描方式。...典型的,在一个没有建立索引的列上进行了order by,就会触发filesort,常见的优化方案是,在order by的列上添加索引,避免每次查询都全量排序。...典型的,group by和order by同时存在,且作用于不同的字段时,就会建立临时表,以便计算出最终的结果集。...| 1分钟系列》 测试的MySQL版本为InnoDB 5.7.22

    2.3K51

    Mysql中explain命令查看执行计划

    前言 使用explain命令可以查看一条查询语句的执行计划,这篇文章记录一下查询计划的各个属性的值极其含义. ? 那么我们按照图中的顺序逐个字段的看一下....本文采用官网的数据库样本,下载地址:[MySQL官方数据库](https://dev.mysql.com/doc/index-other.html) id 一组数据,表示任务被执行的顺序,序号越大的任务越先执行...,当从衍生表中查数据时会显示 x 表示对应的执行计划id。...(Post-filter),如果查询未能使用索引,Using where的作用只是提醒我们MySQL将用where子句来过滤结果集 Using temporary 表示mysql在这个查询语句中使用了临时表...Using filesort 表示使用了文件排序,即查询中的排序无法通过索引来完成. 参考文章 MySQL官方文档 完。

    2K10

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

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

    84430

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

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

    2.3K10

    mysql怎么创建,删除,查看索引?

    mysql是一个开源的应用非常广泛的数据库。mysql里面的索引能利用利用指针,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍。...那么,怎么创建索引呢?...图中数123就是对应普通索引,主键索引,和唯一索引 alter table 表名 add index/unique/primary key (索引名); 第三步,表里面已经有索引了,要怎么查看呢...table;或show keys from table;如图: show index from 表名; show keys from 表名; 第四步,有时候索引太多,会引起增删改查的性能...,出现了错误,说不能发现索引名,是因为在第一次的时候已经删除了,所以,此索引名已经不存在了,如图 第六步,再次查询索引,是否有没有删除成功,重复第三步的命令,结果如图,说明已经删除了

    10.3K20

    mysql的慢查询日志怎么查看_mysql慢查询优化

    1、查看mysql的慢查询日志是否开启 show variables like ‘%query%’; 可以看到slow_query_log的值是OFF,也就是mysql默认是不启用慢查询日志的。...3、指定日志的输出格式 MySQL支持TABLE和FILE两种输出格式,可以用下面的命令来查看当前的输出格式: show variables like ‘%log_output%’; 设置输出格式: set...select sleep(11); 查看TABLE记录的慢日志: select * from mysql.slow_log; 这里面记录了查询时间、发起查询的客户端、扫描行数、执行的sql语句等信息...查看FILE记录的慢日志: 先找到日志文件 打开文件,查看记录的内容: 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    8.3K20

    Mysql执行计划

    sqlAEXPLAIN sqlA分析执行计划的返回结果idid 是 select 的执行顺序,id 越大优先级越高,越先被执行,id 相同时下面的先执行.select_typeselect_type说明...SYSTEM系统,表仅有一行(=系统表)possible_keys预计可能使用的索引,在不和其他表进行关联的时候,查询表时可能使用的索引key实际查询的过程中使用的索引,显示 MySQL 在查询中实际使用的索引...返回结果的行数占读取行数的百分比,值越大越好extra常见的有下面几种use filesort:MySQL 需要额外的一次传递,以找出如何按排序顺序检索行,如果是这个值,应该优化索引。...:mysql Using join buffer (Block Nested Loop) join连接查询优化 - 飞龙在生 - 博客园 (cnblogs.com)MySQL :: MySQL 8.0...练习题MySQL 执行计划详解 - 云+社区 - 腾讯云 (tencent.com)MySQL索引创建及使用_程序人生-CSDN博客_mysql建立索引

    1.3K10

    Mysql执行计划

    sqlA EXPLAIN sqlA 分析执行计划的返回结果 id id 是 select 的执行顺序,id 越大优先级越高,越先被执行,id 相同时下面的先执行. select_type select_type...SYSTEM 系统,表仅有一行(=系统表) possible_keys 预计可能使用的索引,在不和其他表进行关联的时候,查询表时可能使用的索引 key 实际查询的过程中使用的索引,显示 MySQL 在查询中实际使用的索引...返回结果的行数占读取行数的百分比,值越大越好 extra 常见的有下面几种 use filesort:MySQL 需要额外的一次传递,以找出如何按排序顺序检索行,如果是这个值,应该优化索引。...use temporary:为了解决查询,MySQL 需要创建一个临时表来容纳结果。典型情况如查询包含可以按不同情况列出列的 GROUP BY 和 ORDERBY 子句时。...的博客-CSDN 博客_mysql 练习题 MySQL 执行计划详解 - 云 + 社区 - 腾讯云 (tencent.com) MySQL 索引创建及使用_程序人生-CSDN 博客_mysql 建立索引

    10010

    MySQL执行计划

    我们知道我们写的SQL,执行之前要经过优化器的优化,所以我们写的SQL经过SQL优化器之后到底是怎么样的?这就可以通过explain关键字来查看。 2. 能干吗?...可以知道表的读取顺序; 可以知道数据读取操作的操作类型; 可以知道哪些索引被使用; 可以知道表之间的引用; 可以知道每张表有多少行被优化器查询; 3. 怎么用?...执行计划 4. 执行计划包含的信息: 如上图,执行计划查出来后包含如下信息: id:select 查询的序列号,包含一组数字,表示查询中执行select 子句或表的读取顺序。...包含以下内容: extra 含义 using filesort 说明MySQL会对数据使用一个外部的索引排序,而不是用表内的索引顺序进行读取,这种文件内排序是很费时的。...中只使用了两个,col2没了,看它的执行计划就会发现,有using filesort。

    1.1K20

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

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

    1.2K20

    MySQL中的执行计划

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

    86920

    OceanBase初体验之查看OceanBase的执行计划

    前置条件 包含obd和obclient的中控机 OceanBase 测试集群 独立的测试租户 BenchmarkSQL 工具(可选) 为了能够方面的查看复杂SQL的执行计划,我们先用TPCC模拟一些数据库负载...conn=jdbc:mysql://x.x.x.222:2883/test?...我们获取平均执行时间最长的三条SQL,分析他们的实际执行计划和解析执行计划。...: OPERATOR,算子的名称,比如全表扫描TABLE SCAN,真实执行计划会加上PHY_前缀 NAME,算子操作的对象名称,比如表名、索引名等 ROWS,真实执行计划里面代表实际数据行数,explain...里面代表估算的行数(EST.ROWS) COST,算子执行时间,单位是微秒,explain里面的EST.TIME为估算时间 PROPERTY,算子执行的详细过程 这里在查询执行计划时有一个坑要注意,oceanbase.V

    10510

    MySQL执行计划解读

    EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2....EXPLAIN PARTITIONS SELECT …… 用于分区表的EXPLAIN 执行计划包含的信息 ? id 包含一组数字,表示查询中执行select子句或操作表的顺序 ?...possible_keys 指出MySQL能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用 key 显示MySQL在查询中实际使用的索引,若没有使用索引,显示为...MySQL执行计划的局限 •EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况 •EXPLAIN不考虑各种Cache •EXPLAIN不能显示MySQL在执行查询时所作的优化工作...•部分统计信息是估算的,并非精确值 •EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划

    1.4K10

    mysql查看数据库的日志文件_怎么查看mysql数据库的日志文件「建议收藏」

    2017-10-16 回答 一.错误日志 错误日志在mysql数据库中很重要,它记录着mysqld启动和停止,以及服务器在运行过程中发生的任何错误的相关信息。...var/lib/mysql/query_log.log …… 2.读取查询日志 查询日志是纯文本格可,可以使用os文本读取工具直接打开查看。...#log-update= 查看日至: 1....首先确认你日志是否启用了 mysql>show variables like ‘log_bin’; 如果启用了,即on 那日志文件就在mysql的安装目录的data目录下 cat/tail 日志文件名...查看从某一段时间到某一段时间的日志 mysqlbinlog –start-datetime=’2008-01-19 00:00:00′ –stop-datetime=’2008-01-30 00:00:

    14.5K30

    如何使用 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 语句和索引设计的角度上进行改进。

    94620

    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...的形式,表示使用了id为N的查询产生的衍生表 ​ 3、当有union result的时候,表名是union n1,n2等的形式,n1,n2表示参与union的id type type显示的是访问类型,访问类型表示我是以何种方式去访问我们的数据...--using filesort:说明mysql无法利用索引进行排序,只能利用排序算法进行排序,会消耗额外的位置 explain select * from emp order by sal; --using

    5.4K30
    领券