返回顶部
首页 > 资讯 > 数据库 >MySQL中explain命令有什么用
  • 742
分享到

MySQL中explain命令有什么用

2024-04-02 19:04:59 742人浏览 独家记忆
摘要

这篇文章主要介绍了Mysql中explain命令有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。下面来讲讲这个mysql提供的expl

这篇文章主要介绍了Mysql中explain命令有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

下面来讲讲这个mysql提供的explain命令:

语法:explain sql语句例如:

1explain select * from user where id=1

执行完毕之后,它的输出有以下字段:

  id
  select_type
  table
  partitions
  type
  possible_keys
  key
  key_len
  ref
  rows
  Extra

要想知道explain命名怎么使用,就必须把这些字段搞清楚

1. id

SELECT查询的标识符, 每个SELECT语句都会自动分配一个唯一的标识符

2. select_type

每个select查询字句的类型,具体类型以及对应作用如下表:

类型名解释
SIMPLE简单SELECT,不使用UNION或子查询等
PRIMARY查询中若包含任何复杂的子部分,最外层的select被标记为PRIMARY
UNIONUNION中的第二个或后面的SELECT语句
DEPENDENT UNIONUNION中的第二个或后面的SELECT语句,取决于外面的查询
UNION RESULTUNION的结果
SUBQUERY子查询中的第一个SELECT
DEPENDENT SUBQUERY子查询中的第一个SELECT,取决于外面的查询
DERIVED派生表的SELECT, FROM子句的子查询
UNCACHEABLE SUBQUERY一个子查询的结果不能被缓存,必须重新评估外链接的第一行

3. table

显示这一行的数据是查哪张表的,不过有时短路显示的不是真实的表名。

4. partitions

匹配的分区(这个目前用处不大)

5. type

访问类型,表示MySQL在表中找到所需行的方式,对应的值和解释如下:

类型名优级别解释
system1表仅有一行
const2表最多有一个匹配行,在查询开始时即被读取
eq_ref3使用primary key或者unique key作为多表连接的条件,仅从该表中读取一行
ref4作为查询条件的索引在每个表匹配索引值的行从表中读取出来
fulltext5全文索引检索
ref_or_null6和ref一致,但增加了NULL值查询支持
index_merge7表示使用了索引合并优化方法
unique_subquery8使用了替换了in子查询
index_subquery9使用了替换了in子查询,但只适用于子查询中的非唯一索引
range10只检索给定范围的行,使用一个索引来选择行
index11全表扫描,但扫描表的方式是按索引的次序进行
ALL12全表扫描的方式找到匹配的行

type作为访问类型,其值代表着当前查询所用的类型,是体现性能的一个重要指标,从表中可以看到,从上到下,扫描表的方式越来越宽,性能也就越来越差,因此,对于一个查询,最好能保持在range级别以上。

6. possible_keys

主动指出查询能用哪个索引在表中找到记录也就是会列出在查询中的字段中有索引的字段,但不一定被查询所用。

7. key

显示再查询中实际使用的索引/键,如果没有索引,则显示NULL。但如果想强制查询中使用或忽视possible_keys列中的索引,则可以在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

8. key_len

表示索引中使用的字节数。

9. ref

表示哪些列或常量被用于查找索引列上的值。

10. rows

显示当前查询估算到的查找到匹配记录所需的记录行数。

11. Extra

显示当前查询所用的解决方式,它有以下几种情况:

类型名解释
Using where列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,
Using temporary表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询
Using filesortMySQL中无法利用索引完成的排序操作称为“文件排序”
Using join buffer改值强调了在获取连接条件时没有使用索引,并且需要连接缓冲区来存储中间结果。如果出现了这个值,那应该注意,根据查询的具体情况可能需要添加索引来改进能。
Impossible where这个值强调了where语句会导致没有符合条件的行。
Select tables optimized away这个值意味着仅通过使用索引,优化器可能仅从聚合函数结果中返回一行

讲完了语法,我们来实际操作一波,首先创建个表:

-- 创建表
CREATE TABLE test(
id INT(11) NOT NULL AUTO_INCREMENT,
uname VARCHAR(255),
PRIMARY KEY(id) 
);

然后给uname字段加上索引:

-- 添加索引
ALTER TABLE test ADD INDEX uname_index (uname);

查看一下索引是否添加成功:

-- 查看是否有索引
SHOW INDEX FROM test;

输出结果为:

MySQL中explain命令有什么用

可以看出索引已经创建成功,接下来添加一些数据:

-- 添加一些数据
INSERT INTO test VALUES(1,'jay');
INSERT INTO test VALUES(2,'ja');
INSERT INTO test VALUES(3,'bril');
INSERT INTO test VALUES(4,'aybar');

一切准备就绪,下面用explain这个命令来探究一些like语句是否有索引,like有四种情况,分别为没有%、 %% 、左%、右%、

1. like 字段名

EXPLAIN SELECT * FROM test WHERE uname LIKE 'j';

输出为:

MySQL中explain命令有什么用

可以看出:type的值为:range,key的值为uname_index,也就是说这种情况下,使用了索引。

2. like %字段名%

EXPLAIN SELECT * FROM test WHERE uname LIKE '%j%';

输出为:

MySQL中explain命令有什么用

可以看出:type的值为ALL也就是全表扫描,而且key的值为NULL,也就是说没用到任何索引。

3. like %字段名

EXPLAIN SELECT * FROM test WHERE uname LIKE '%j';

输出为:

MySQL中explain命令有什么用

可以看出:type的值为ALL,key的值为NULL,同样没用到索引。

4. like 字段名%

EXPLAIN SELECT * FROM test WHERE uname LIKE 'j%';

输出为:

MySQL中explain命令有什么用

可以看出:type的值为:range,key的值为uname_index,也就是说这种情况下,使用了索引。

感谢你能够认真阅读完这篇文章,希望小编分享的“MySQL中explain命令有什么用”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网数据库频道,更多相关知识等着你来学习!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中explain命令有什么用

本文链接: https://lsjlt.com/news/57528.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL中explain命令有什么用
    这篇文章主要介绍了MySQL中explain命令有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。下面来讲讲这个MySQL提供的expl...
    99+
    2024-04-02
  • MySQL中explain命令怎么用
    这篇文章主要介绍了MySQL中explain命令怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。explain有何用处呢:为了知道优化S...
    99+
    2024-04-02
  • MySQL中 EXPLAIN命令的作用是什么
    MySQL中 EXPLAIN命令的作用是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。ID    SE...
    99+
    2024-04-02
  • mysql中Explain命令的作用是什么
    本篇文章给大家分享的是有关mysql中Explain命令的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、概念explain 用来分析 SELECT 查询语...
    99+
    2023-06-15
  • MySQL中如何使用EXPLAIN命令
    这篇文章主要为大家展示了“MySQL中如何使用EXPLAIN命令”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中如何使用EXPLAIN命令”这篇文章吧...
    99+
    2024-04-02
  • SQL中EXPLAIN命令怎么用
    这篇文章主要介绍了SQL中EXPLAIN命令怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。explain显示了mysql如何使用索引来处理select语句以及...
    99+
    2023-06-08
  • Mysql Explain命令的使用与分析
    mysql explain命令用于显示mysql如何使用索引来处理select语句以及连接表。通过该命令可以分析出查询语句或是表结构的性能瓶颈,从而写出性能更好的SQL语句,通过 expalin 命令我们可...
    99+
    2024-04-02
  • mysql中drop table命令有什么用
    这篇文章主要介绍了mysql中drop table命令有什么用,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。drop table是数据库中用于删...
    99+
    2024-04-02
  • 一文搞懂MySQL中EXPLAIN解释命令
    本文主要给大家简单讲讲MySQL中EXPLAIN解释命令,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL中EXPLAIN解释命令这篇文章可以给大家带...
    99+
    2024-04-02
  • explain命令为什么可能会修改MySQL数据
    如果有人问你,对查询执行EXPLAIN是否可以改变你的数据库,你可能会说不会; 通常都是这么认为的。EXPLAIN应该向我们展示查询是如何执行的,而不是执行查询,因此它不能更改任何数据。 不幸的是,在这种情况下,常识...
    99+
    2022-05-19
    MySQL explain命令 explain命令修改MySQL数据
  • mysql索引篇explain命令详解
    目录前言keytypeExtra前言 mysql中的explain命令可以用来查看sql语句是否使用了索引,用了什么索引,有没有做全表扫描。可以帮助我们优化查询语句。explain出来的信息有10列,文章主要介绍type...
    99+
    2024-04-02
  • Linux的mysql命令有什么用
    本篇内容主要讲解“Linux的mysql命令有什么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux的mysql命令有什么用”吧!Linux常用命令mysql命令 是MySQL数据库服务...
    99+
    2023-06-28
  • MySQL中mysqldump命令的参数有什么用
    这篇文章主要介绍MySQL中mysqldump命令的参数有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 参数说明--all-databases ...
    99+
    2024-04-02
  • mysql中的pt-query-digest命令有什么用
    这篇文章将为大家详细讲解有关mysql中的pt-query-digest命令有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。pt-query-digest是用于分析...
    99+
    2024-04-02
  • Linux命令中的cat命令有什么用
    今天给大家介绍一下Linux命令中的cat命令有什么用。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。cat命令的用途是连接文件或标准输入并打印。这个命令常用来...
    99+
    2023-06-28
  • MySQL中EXPLAIN解释命令及用法的示例分析
    这篇文章将为大家详细讲解有关MySQL中EXPLAIN解释命令及用法的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1,情景描述:同事教我在mysql中用expl...
    99+
    2024-04-02
  • MySQL中执行计划explain命令示例详解
    前言 explain命令是查看查询优化器如何决定执行查询的主要方法。 这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间去了解,因为可以学习到查询是如何执行的。 调用EXPLA...
    99+
    2024-04-02
  • mysql中explain的用法是什么
    在MySQL中,EXPLAIN是一种用于分析查询语句的关键字。它提供了关于查询执行计划的详细信息,帮助优化查询语句的性能。使用EXP...
    99+
    2023-08-28
    mysql
  • Mysql中explain的作用是什么
    在MySQL中,EXPLAIN命令用于查询优化和性能调优。它显示了MySQL如何执行给定查询的详细信息,包括查询使用的索引、表之间的...
    99+
    2023-08-15
    Mysql explain
  • linux中git命令有什么用
    这篇文章将为大家详细讲解有关linux中git命令有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言因为结合了开发中可能遇到的场景,篇幅较长,不过我觉得很有助于你理解 git 的运作机制,而不是死...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作