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

MySQL Explain用法详解

output 列名 备注 id select编号,从1开始,如果是没有子查询,则编号为1,如果有子查询,则最外侧select为1,然后按照select顺序从左到右逐渐递增 select_type...查询类型,例如简单查询,子查询,Union查询等(具体见下表) table select所访问表(也可以是派生表) partitions 用于分区表, 表示select所访问分区 type 表示该...possible_keys 表示可能会用到索引用来加速查询,未经过优化器确定。 key 经过优化器确定之后,实际采用索引 key_len 实际采用索引字段长度....(计算方式与字符集、字段类型是否为固定长度以及是否可以为null有关系) ref 表示key在查找数据时候,所用到常量或者列名 rows 查询所扫描行数,但是一般不准确。...ref可以用于使用=或操作符带索引列.或者仅查询主键,并且condition里面使用索引。

1.1K00

MySQL中explain几点用法

MySQL里explain命令内容还是很丰富,值得好好挖掘出不少东西来。...本身来说explain就是生成执行计划内容,如果细看,这个内容和Oracle explain plan for结果相比还是有差距。...首先是一个比较实际用法,查询语句我们可以查看执行计划,如果是DML语句呢,他是直接变更了还是只是生成执行计划而已,明白这一点很重要。...explain 生成DML执行计划 为了进一步验证,我们选择3个版本,5.5,5.6,5.7来测试。 首先是初始化数据,这个在不同版本是一模一样方式。 创建一个表test,插入两行数据。...for connection新特性 如果对于explain开始有了一些感觉,那么我们再来看一个5.7中新特性,那就是对connection解析,也就是explain for connection

1.7K70
您找到你想要的搜索结果了吗?
是的
没有找到

mysql explain用法和结果含义

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好索引和写出更优化查询语句。...使用方法,在select语句前加上explain就可以了: 先看个例子 mysql> explain select * from t_order;  | id | select_type | table...:子查询中第一个SELECT DEPENDENT SUBQUERY:子查询中第一个SELECT,取决于外面的查询 DERIVED:导出表SELECT(FROM子句子查询) table 输出行所引用表...多行之间数据相乘可以估算要处理行数。 filtered 显示了通过条件过滤出行数百分比估计值。...rows 显示MySQL认为它执行查询时必须检查行数。多行之间数据相乘可以估算要处理行数。 filtered 显示了通过条件过滤出行数百分比估计值。

2.1K10

Mysql中explain用法和结果字段含义介绍

做一个积极的人 编码、改bug、提升自己 我有一个乐园,面向编程,春暖花开 文章目录 explain用法 explain结果字段含义介绍 id select_type table type possible_keys...key key_len ref rows filtered Extra explain使用实例 总结 参考博文 拓展阅读 使用 explain 查询和分析SQl执行记录,可以进行sql性能优化!...explain用法 mysql> explain select * from students; +----+-------------+----------+------+--------------...不会告诉你关于触发器、存储过程信息或用户自定义函数对查询影响情况 EXPLAIN不考虑各种Cache EXPLAIN不能显示MySQL在执行查询时所作优化工作 部分统计信息是估算,并非精确值 EXPALIN...参考博文 mysql中explain用法和结果含义 EXPLAIN 命令详解 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/121081.html原文链接:https

57240

EXPLAIN作用

什么是EXPLAINEXPLAIN 是 MySQL 中一个重要命令,它用于分析 SQL 查询语句执行计划。...EXPLAIN 主要作用是帮助开发者理解查询语句执行过程,以及查询优化器如何选择索引、表扫描方式等。通过分析 EXPLAIN 输出结果,开发者可以找到查询性能瓶颈,并对查询语句进行优化。...通过观察 EXPLAIN 输出结果,你可以找出查询性能瓶颈,如全表扫描、没有使用索引等。然后,你可以根据这些信息对查询语句进行优化,如添加合适索引、调整查询条件等。为什么要使用EXPLAIN?...使用 EXPLAIN 主要目的是分析和优化查询语句执行计划。以下是一些使用 EXPLAIN 重要原因:查询性能分析: 通过 EXPLAIN,你可以深入了解 MySQL 是如何执行查询。...连接类型分析: 对于涉及多个表查询,EXPLAIN 显示了连接类型(如嵌套循环连接、哈希连接等)。这有助于了解查询复杂性和连接操作开销。

12110

explain

人们很少做他们相信是对事,他们做比较方便事,然后后悔。...——鲍勃.迪伦 使用explain+SQL 作用: 表读取顺序 数据读取操作操作类型 哪些索引可以使用 哪些索引被实际使用 表之间引用 每张表有多少行被优化器查询 id select_type...字句或操作表顺序 id值越大执行优先级越高,id相同情况下执行顺序从上到下 select_type:查询类型,主要是用于区别普通查询、联合查询、子查询等复杂查询 simple简单select查询...>ref>range>index>ALL system系统表 const通过索引一次就找到了,例如主键查询 explain select * from user where id = "" eq_ref...连表唯一条件 selec * from user,user_info where user.id = user_info.id ref返回匹配某个单独值所有行 explain SELECT * FROM

22420

mysqlexplain详解

我们在实际业务中经常会使用到explain,因为这里涉及到查询,下面我们来看一个例子,比如我们要查一本书上一章或者下一章,我们sql是这样: 查询5164这本书4054495这一章上一章:下面的是...500多万条数据,我explain了一下: explain SELECT * FROM article WHERE (id < 4054495) AND (book_id = '5164') ORDER...然后我改了一下sql,重新explain一下结果,如下: explain SELECT * FROM article force index(idx_1) WHERE (id < 4054495) AND...下面我们详解一下explain解析结果,常用字段说明: 字段:select_type 解释:select语句类型 常见值及其说明: simple:表示简单select,没有union和子查询 primary...小表)进行连接数目。

38230

MySQL EXPLAIN 使用

EXPLAIN解释: table:显示这一行数据是关于哪张表 type:这是重要列,显示连接使用了何种类型。...possible_keys:显示可能应用在这张表中索引。如果为空,没有可能索引。可以为相关域从WHERE语句中选择一个合适语句 key: 实际使用索引。如果为NULL,则没有使用索引。...很少情况下,MYSQL会选择优化不足索引。...这是使用索引最慢连接之一 Using filesort: 看到这个时候,查询就需要优化了。MYSQL需要进行额外步骤来发现如何对返回行排序。...它根据连接类型以及存储排序键值和匹配条件全部行行指针来排序全部行 Using index: 列数据是从仅仅使用了索引中信息而没有读取实际行动表返回,这发生在对表全部请求列都是同一个索引部分时候

48410

mysql explain ref列_MySQL EXPLAIN详解

MySQL EXPLAIN详解:http://www.jianshu.com/p/ea3fc71fdc45 MySQL EXPLAIN命令是查询性能优化不可缺少一部分,该文主要讲解explain...Extra Extra是EXPLAIN输出中另外一个很重要列,该列显示MySQL在查询过程中一些详细信息,MySQL查询优化器执行查询过程中对查询计划重要补充信息。...distinct 优化distinct操作,在找到第一匹配元组后即停止找同样值动作 explain作用 我们使用explain命令来查看mysql语句执行计划(execution plan),解释...使用explain,可以分析出需要在哪里加上索引,以及调整表连接,以达到优化查询目的;explain命令之后不仅可以跟select语句,也可以跟delete,insert,update,replace...用法 只需要在sql语句前加上explain就可以了,比如: +—-+————-+——-+————+——+—————+——+———+——+——–+———-+——-+ | id | select_type

3.5K60

MYSQL explain 可没有那么简单,explain猫腻与函数

explain 到底会不会执行命令着一点很多人应该是不置可否任务,他不能执行命令,而仅仅是对语句进行评估然后反馈执行计划。...所以这里第一点问题是,函数尽量不要带有和表有关操作。如果带有和表有关操作则在explain情况下会出现上面的问题,想象中是查看执行计划,但结果是操作了这个语句。...那么出现这样问题,如果要进行执行计划查看,但是又不想不运行这个函数,可以通过在执行explain 语句情况前添加事务方法,来规避一些风险。...同时在MYSQL 8 中后续命令 explain analyze 命令是否也有这个问题我们看一下,从下面的图可以看出,MYSQL 8 中新添加了 explain ananlyze 实际上在命令安全方面和之前没有太大变化...关于MYSQL 8 中 explain analyze 这个命令如果感兴趣可以查看 https://mysqlserverteam.com/mysql-explain-analyze/ 这里有详细说明和使用方法

84120

PostgreSqlExplain命令详解

选择正确匹配查询结构和数据属性规划对执行效率是至关重要要,所以系统包含一个复杂规划器来试图选择好规划。你可以使用EXPLAIN命令查看查询规划器创建任何查询。...通常有不只一种可能方式做这些操作,所以可能出现不同节点类型。 EXPLAIN输出是每个树节点显示一行,内容是基本节点类型和执行节点消耗评估。...当然下一个问题就是规划器评估为什么是正确。我们可以通过EXPLAIN ANALYZE进行考察。 EXPLAIN ANALYZE 通过EXPLAIN ANALYZE可以检查规划器评估准确性。...某些情况EXPLAIN ANALYZE会显示额外信息,比如sort和hash节点时候: Sql代码 ?...注意,延迟触发器在事务结束前都不会被执行,所以EXPLAIN ANALYZE不会显示。

2.2K20

Mysql Explain主要字段

这可能是除了system和const之外最好类型。 当主键或唯一非NULL索引所有字段都被用作join联接时会使用此类型。 eq_r ef可用于使用’='操作符作比较索引列。...比较值可以是常量,也可以是使用在此表之前读取表达式。 相对于下面的ref区别就是它使用唯一索引,即主键或唯一索引,而ref使用是非唯一索引或者普通索引。...4、ref 对于来自前面表每一行,在此表索引中可以匹配到多行。若联接只用到索引最左前缀或索引不是主键或唯一索引时, 使用ref类型(也就是说,此联接能够匹配多行记录)。...要注意,全文索引优先级很高,若全文索引和普通索引同时存在时,mysql不管代价,优先选择使用全文索引 6、ref_or_null 跟ref类型类似,只是增加了null值比较。实际用不多。...这里包含两种情况: 一种是查询使用了覆盖索引,那么它只需要扫描索引就可以获得数据,这个效率要比全表扫描要快, 12ALl 没有使用索引,全表扫描 12. extra(重要)     EXplain

1.4K20
领券