首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    详解 MySQL 执行计划 -- Explain

    引言 此前我们介绍过 MySQL 性能优化的相关内容: Mysql Innodb 性能优化 其中提到了执行计划 Explain 的使用,那么,究竟 explain 命令的结果中每一项数据都表示了什么意思呢...通常我们通过 explain 命令来获取 select 语句的执行计划,就是在 select 语句前增加 explain 关键字。...此前,我们介绍过 mysql执行过程: mysql 异常情况下的事务安全 — 详解 mysql redolog 一旦 select 语句前加了 explain 关键字,那么 mysql server...通过执行 explain 命令可以看到标的读取顺序、读取操作的类型、使用的索引、扫描的行数等信息。...sql 执行顺序的序号,id 越大,越先执行,id 相同时,由上至下执行

    90811

    MySQL Explain查看执行计划

    我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。...(QEP:sql生成一个执行计划query Execution plan) mysql> explain select * from user; expain出来的信息有10列,分别是id、select_type...、table、type、possible_keys、key、key_len、ref、rows、Extra,下面对这些字段出现的可能进行解释: 一、 id id相同时,执行顺序由上至下 如果是子查询,id...的序号会递增,id值越大优先级越高,越先被执行 id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行 二、select_type SIMPLE(简单SELECT,...• EXPLAIN不考虑各种Cache • EXPLAIN不能显示MySQL执行查询时所作的优化工作 • 部分统计信息是估算的,并非精确值 • EXPALIN只能解释SELECT操作,其他操作要重写为

    1.9K30

    MYSQL explain执行计划解读

    点击上方“码农编程进阶笔记”,选择“置顶或者星标” Explain 查看SQL语句的执行计划:分析SQL执行计划,优化SQL及索引策略,run faster....EXPLAIN SELECT * from user_info WHEREid = 1; ?...Explain查看查询计划主要包含如下信息列:查询id、查询类型、查询表、扫描访问类型、查询可能选用的索引、查询实际使用索引、mysql决定使用索引长度、ref 显示哪个字段或常数与key一起被使用、估算扫描行数...---- explain结果各列含义: 一、id :select查询的序列号 二、select_type: select查询的类型,主要是区别 普通查询和联合查询、子查询之类的复杂查询。...NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引。

    1.1K40

    详解Mysql执行计划explain

    1、MySQL语法 MySql提供了EXPLAIN语法用来进行查询分析,在SQL语句前加一个”EXPLAIN”即可。...命令查看query语句的性能: EXPLAIN select * from user_feedback;##查看执行计划中的sql性能 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传...,执行顺序由上至下 如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行 3.id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行 table:显示这一行的数据是关于哪张表的...总结 • EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况 • EXPLAIN不考虑各种Cache • EXPLAIN不能显示MySQL执行查询时所作的优化工作...mysql中的explain语法可以帮助我们改写查询,优化表的结构和索引的设置,从而最大地提高查询效率。

    94420

    MySQL执行计划(explain)分析

    MySQL执行计划(explain)分析 EXPLAIN支持对SELECT、UPDATE、INSERT、REPLACE、DELETE分析 执行计划能知道: SQL如何使用索引 联接查询的执行顺序 查询扫描的数据行数...ID列: 表示执行SELECT语句的顺序 ID相同时,执行顺序由上至下 ID越大优先级越高,越优先被执行 SELECTTYPE列: SIMPLE:不包含子查询或是UNION操作的查询 PRIMARY:...通过索引统计信息,估算的所需读取的行数 ROWS值的大小是个统计抽样结果,并不十分准确 FILTERED列 表示返回结果的行数占需读取行数的百分比 FILTERED列的值越大越好 依赖于统计信息 - 执行计划的限制...无法展示存储过程,触发器,UDF对查询的影响 无法使用EXPLAIN对存储过程进行分析 早期版本的MySQL只支持对SELECT语句进行分析 常见业务优化处理 优化评论分页查询 例子 SELECT customer_id...参考 高性能可扩展MySQL数据库设计及架构优化 电商项目,sqlercn,https://coding.imooc.com/class/79.html

    95440

    MYSQL explain执行计划解读

    Explain 查看SQL语句的执行计划:分析SQL执行计划,优化SQL及索引策略,run faster....EXPLAIN SELECT * from user_info WHEREid = 1; Explain查看查询计划主要包含如下信息列:查询id、查询类型、查询表、扫描访问类型、查询可能选用的索引...---- explain结果各列含义: 一、id :select查询的序列号 二、select_type:select查询的类型,主要是区别 普通查询和联合查询、子查询之类的复杂查询。...常见于主键或唯一索引扫描 const, system: 当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量。...NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引。

    72020

    MySQL EXPLAIN执行计划详解

    详细介绍了MySQL EXPLAIN执行计划的各个字段的含义以及使用方式。 调用EXPLAIN可以获取关于查询执行计划的信息,以及如何解释输出。...MySQL会在查询上设置一个标记。当执行查询时,这个标记会使其返回关于在执行计划中每一步的信息,而不是真正完全的执行该语句。 它会返回一行或多行信息,显示出执行计划中的每一部分和执行的次序。...增加了EXPLAIN之后,MySQL可能仍然会执行部分查询,如果查询中FROM字句中包括子查询,那么MySQL实际会执行子查询的,并将其结果放在一个临时表中,然后完成外层查询优化。...可以通过该列从上到下观察MySQL的关联优化器为查询选择的关联顺序。...此时mysql会根据联接类型浏览所有符合条件的记录,并保存排序关键字和行指针,然后排序关键字并按顺序检索行信息。这种情况下一般也是要考虑使用索引来优化的。

    1.7K140

    Mysql-SQL执行顺序

    SQL的执行顺序事实上,sql并不是按照我们的书写顺序来从前往后、左往右依次执行的,它是按照固定的顺序解析的,主要的作用就是从上一个阶段的执行返回结果来提供给下一阶段使用,sql在执行的过程中会有不同的临时中间表...,一般是按照如下顺序:例子:select distinct s.id  from T t join  S s on t.id=s.id where t.name="Yrion" group by t.mobile...:表示要从数据库中执行哪张表。...通过from 和 join on 选择出需要执行的数据库表T和S,产生笛卡尔积,生成T和S合并的临时中间表Temp1。...实例说明:在temp7中排好序的数据,然后取前五条插入到Temp9这个临时表中,最终返回给客户端ps:实际上这个过程也并不是绝对这样的,中间mysql会有部分的优化以达到最佳的优化效果,比如在select

    29010

    MySQL执行过程以及顺序

    因为学习和了解MySQL是至关重要的,那么当我们在客户端发起一个sql到出现详细的查询数据,这其中究竟经历了什么样的过程?MySQL服务端是如何处理请求的,又是如何执行sql语句的?...本篇博客将来探讨这个问题: 本篇博客的目录 一:MySQL执行过程 二:MySQL执行过程中的状态 三:MySQL执行顺序 四:总结 一:MySQL执行过程 MySQL整体的执行过程如下图所示: 1.1...,MySQL会计算各个执行方法的最佳时间,最终确定一条执行的sql交给最后的执行器 1.5:执行器 在执行器的阶段,此时会调用存储引擎的API,API会调用存储引擎,主要有一下存储的引擎,不过常用的还是...囊括了所有的MySQL的所有状态,其中具体的含义如下图: 三:sql的执行顺序 事实上,sql并不是按照我们的书写顺序来从前往后、左往右依次执行的,它是按照固定的顺序解析的,主要的作用就是从上一个阶段的执行返回结果来提供给下一阶段使用...筛选出找到的数据集 四:总结 本篇博客总结了MySQL执行过程,以及sql的执行顺序,理解这些有助于我们对sql语句进行优化,以及明白MySQL中的sql语句从写出来到最终执行的轨迹,有助于我们对sql

    1.5K20

    Explain 命令分析 MySQL 的 SQL 执行

    为此,我们需要使用 explain 来获取 MySQL 执行这条 SQL 的执行计划。 什么是执行计划呢?...MySQL 查询过程 如果能搞清楚 MySQL 是如何优化和执行查询的,不仅对优化查询一定会有帮助,还可以通过分析使用到的索引来判断最终的加锁场景。 下图是MySQL执行一个查询的过程。...执行计划 MySQL会解析查询,并创建内部数据结构(解析树),并对其进行各种优化,包括重写查询、决定表的读取顺序、选择合适的索引等。 用户可通过关键字提示(hint)优化器,从而影响优化器的决策过程。...[keys_ref] using filesort MySQL 会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取,若出现该值,应该优化 SQL 语句。...[temporary] distinct 发现第一个匹配后,停止为当前的行组合搜索更多的行 后记 通过 explain 了解到 SQL 的执行计划后,我们不仅可以了解 SQL 执行时使用的索引,判断加锁场景

    1.5K00

    Explain 命令分析 MySQL 的 SQL 执行

    其中 id 和 val 都是索引,那么执行时使用到了哪些索引,加了哪些锁呢?为此,我们需要使用 explain 来获取 MySQL 执行这条 SQL 的执行计划。 什么是执行计划呢?...MySQL 查询过程 如果能搞清楚 MySQL 是如何优化和执行查询的,不仅对优化查询一定会有帮助,还可以通过分析使用到的索引来判断最终的加锁场景。 下图是MySQL执行一个查询的过程。...执行计划 MySQL会解析查询,并创建内部数据结构(解析树),并对其进行各种优化,包括重写查询、决定表的读取顺序、选择合适的索引等。 用户可通过关键字提示(hint)优化器,从而影响优化器的决策过程。...using filesort MySQL 会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取,若出现该值,应该优化 SQL 语句。...distinct 发现第一个匹配后,停止为当前的行组合搜索更多的行 后记 通过 explain 了解到 SQL 的执行计划后,我们不仅可以了解 SQL 执行时使用的索引,判断加锁场景,还可以针对其他信息对

    1.8K11

    Mysqlexplain命令查看执行计划

    前言 使用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在这个查询语句中使用了临时表.

    2K10
    领券