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

MySQL EXPLAIN使用

EXPLAIN列的解释: table:显示这一行的数据是关于哪张表的 type:这是重要的列,显示连接使用了何种类型。...可以为相关的域从WHERE语句中选择一个合适的语句 key: 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。...这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引 key_len:使用的索引的长度...在不损失精确性的情况下,长度越短越好 ref:显示索引的哪一列被使用了,如果可能的话,是一个常数 rows:MYSQL认为必须检查的用来返回请求数据的行数 Extra:关于MYSQL如何解析查询的额外信息...因为只有一行,这个值实际就是常数,因为MYSQL先读这个值然后把它当做常数来对待 eq_ref:在连接中,MYSQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用

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

    mysql explain ref null_MySQL Explain详解

    MySQL Explain详解 简介 执行计划(query Execution plan) 语法 explain select * from table explain 中的列 expain出来的信息有...使用索引中的读取执行全表扫描,以按索引顺序查找数据行。 Uses index没有出现在 Extra列中。当查询仅使用属于单个索引的列时,MySQL可以使用此连接类型。...能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用 该列完全独立于EXPLAIN输出所示的表的次序。...如果是这样,创造一个适当的索引并且再次用EXPLAIN检查查询 六、Key key列显示MySQL实际决定使用的键(索引) 如果没有选择索引,键是NULL。...十、Extra 该Extra列 EXPLAIN输出包含MySQL解决查询的额外信息。

    1.8K40

    MySQL explain extra

    MySQL执行计划中,extra可以展示执行的一些细节,比如索引下推,覆盖索引,排序等信息,为索引优化提供了更完整的信息 常见的extra extra有很多,这里只列出了最常见的几种类型 Using...查询条件中 Using index condition: 索引下推(Index Condition Pushdown) Using filesort:Server层需要做额外的排序操作,需要优化,让排序使用到索引...因为接近的索引,可能在相同的页上 Using temporary:使用了临时表,需要优化 疑问 条件中只有一个条件,是索引的第一个字段,也可能Using index condition,这个就太不明白了...> explain select * from user where name like 'hello%'; +----+-------------+-------+------------+-----.../doc/refman/8.0/en/explain-output.html#explain-extra-information Mysql-explain之Using temporary和Using

    70130

    Mysql Explain 详解

    system: 当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。...五、possible_keys 指出MySQL使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用 该列完全独立于EXPLAIN输出所示的表的次序。...如果是这样,创造一个适当的索引并且再次用EXPLAIN检查查询 六、Key key列显示MySQL实际决定使用的键(索引) 如果没有选择索引,键是NULL。...要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。...• EXPLAIN不考虑各种Cache • EXPLAIN不能显示MySQL在执行查询时所作的优化工作 • 部分统计信息是估算的,并非精确值 • EXPALIN只能解释SELECT操作,其他操作要重写为

    1.1K20

    mysqlexplain介绍

    我们对系统性能分析的一部分就是数据库的分析,比如定位到查询速度慢的SQL,我们想对其进行优化,但是从哪些方面进行优化,就需要使用explain来查看select语句的执行计划。...explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理SQL语句的,对我们的查询语句进行分析,提升性能。...使用expain关键字,我们可以分析到的信息有: 表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被实际使用 表之间的引用 每张表有多少行被优化器查询 使用方法:explain + SQL...查询中若包含任何复杂的子部分,最外层查询则被标记为PRIMARY SUBQUERY 在SELECT或WHERE列表中包含了子查询 DERIVED 在FROM列表中包含的子查询被标记为DERIVED(衍生),MySQL...如将主键置于where列表中,MySQL就能将该查询转换为一个常量。

    43330

    MySQL EXPLAIN ANALYZE

    Ryeng 译:徐轶韬 MySQL8.0.18刚刚发布,它包含一个全新的功能EXPLAIN ANALYZE,用来分析和理解查询如何执行。 EXPLAIN ANALYZE是什么?...EXPLAIN ANALYZE是一个用于查询的分析工具,它向用户显示MySQL在查询上花费的时间以及原因。它将产生查询计划,并对其进行检测和执行,同时计算行数并度量执行计划中不同点上花费的时间。...这项新功能建立在常规的EXPLAIN基础之上,可以看作是MySQL 8.0之前添加的EXPLAIN FORMAT = TREE的扩展。...EXPLAIN除了输出查询计划和估计成本之外,EXPLAIN ANALYZE还会输出执行计划中各个迭代器的实际成本。 如何使用?...EXPLAIN ANALYZE是MySQL查询分析工具里面的一个新工具: 检查查询计划:EXPLAIN FORMAT = TREE 分析查询执行:EXPLAIN ANALYZE 了解计划选择:Optimizer

    1.4K20

    mysql explain详解

    Explain简介 本文主要讲述如何通过 explain 命令获取 select 语句的执行计划,通过 explain 我们可以知道以下信息:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些索引实际使用了...下面是使用 explain 的例子: 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果 from...or 的时候没有用 primary key,而是使用了 primary key(id) 和 tenant_id 索引 mysql> explain select * from role where id...如果没有使用索引,则该列是 NULL。如果想强制mysql使用或忽视possible_keys列中的索引,在查询中使用 force index、ignore index。...7. key_len列 这一列显示了mysql在索引里使用的字节数,通过这个值可以算出具体使用了索引中的哪些列。

    41.2K2322

    MySQL - EXPLAIN详解

    概述 EXPLAIN: 为 SELECT语句中使用到的每个表返回一条信息。它按照MySQL在处理语句时读取它们的顺序列出这些表。MySQL使用循环嵌套算法解析所有连接。...QEP: SQL语句的查询执行计划 注意: 在以前版本的MySQL中,使用 EXPLAIN PARTITIONS 与 EXPLAIN EXTENDED 来生成分区和扩展信息 。...目前为止这些语法仍然是向后兼容的,但未来 MySQL会将它们排除出 EXPLAIN语法,因为现在 EXPLAIN默认就会输出分区和扩展的相关信息。...所以 PARTITIONS 与 EXTENDED关键字是多余的,不推荐使用,且在使用时会提示警告。 EXPLAIN 输出 本部分着重描述 EXPLAIN生成的结果。...如果是这样,那么就需要创造一个适当的索引,并再次用 EXPLAIN检查 key(JSON名:key) 显示MySQL实际决定使用的键(索引),如果MySQL决定使用其中一个 possible_keys

    1.3K21

    mysql explain详解

    对于经常使用mysql的兄弟们,对explain一定不会陌生。当你在一条SELECT语句前放上关键词EXPLAINMySQL解释它将如何处理SELECT,提供有关表如何联合和以什么次序的信息。...官方的关于explain的文档在http://dev.mysql.com/doc/refman/5.1/en/using-explain.html(英文),本文可作为官方文献的不完整通俗读物。...使用的方法 EXPLAIN tbl_name 或: EXPLAIN [EXTENDED] SELECT select_options 前者可以得出一个表的字段结构等等,后者主要是给出相关的一些索引信息,...key 显示MySQL实际决定使用的键。如果没有索引被选择,键是NULL。 key_len 显示MySQL决定使用的键长度。如果键是NULL,长度就是NULL。...文档提示特别注意这个值可以得出一个多重主键里mysql实际使用了哪一部分。 ref 显示哪个字段或常数与key一起被使用

    785100

    mysql explain 详解

    使用了分区,则会显示出具体需要查询的分区 type 访问类型 mysql在查询中找到数据的查询方式,从上往下,性能从最好到最差 system                该表只有一行数据(系统表),...能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用(该查询可以利用的索引,如果没有任何索引显示 null) key mysql决定使用的索引,一定会在possible_keys...表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数 当估算行数超出总数的30%(默认情况)时,mysql将拒绝使用索引,转为全表查询 (select * from table...matching min/max row                  当查询列表处有 MIN 或者 MAX 聚集函数,但是并没有符合 WHERE 子句中的搜索条件的记录时,将会提示该额外信息( EXPLAIN...如果 WHERE 子句中包含要求被驱动表的某个列等于 NULL 值的搜索条件,而且那个列又是不允许存储 NULL 值的,那么在该表的执行计划的 Extra 列就会提示 Not exists 额外信息( EXPLAIN

    87220

    MySQL explain详解

    MySQL explain详解 Explain简介 本文主要讲述如何通过 explain 命令获取 select 语句的执行计划,通过 explain 我们可以知道以下信息:表的读取顺序,数据读取操作的类型...下面是使用 explain 的例子: 在 select 语句之前增加 explain 关键字,MySQL会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果 from 中包含子查询...or 的时候没有用 primary key,而是使用了 primary key(id) 和 tenant_id 索引 mysql> explain select * from role where id...如果没有使用索引,则该列是 NULL。如果想强制mysql使用或忽视possible_keys列中的索引,在查询中使用 force index、ignore index。...7. key_len列 这一列显示了mysql在索引里使用的字节数,通过这个值可以算出具体使用了索引中的哪些列。

    72620
    领券