首页 > 数据库 >mysql 中的 explain 关键字

mysql 中的 explain 关键字

时间:2022-11-12 10:12:10浏览次数:49  
标签:表示 index 关键字 UNION explain 查询 索引 mysql ref

在MySQL中使用explain关键字可以模拟查看数据库是如何来执行SQL查询语句,也就是常说的查看一条SQL语句在数据库中的执行计划,如下图所示

此图就是执行 EXPLAIN SELECT * FROM  test.test 后返回的SELECT * FROM  test.test查询的执行计划

查询结果返回的字段说明如表所示 

表查询结果返回的字段说明

字段

说明

id

查询的顺序编号,表示查询中执行的顺序,id的值越大执行的优先级越高,如果id相同,则从上往下执行

select_type

查询类型,常见查询类型如下:

SIMPLE:表示简单查询方式,SQL语句中一般不会不使用UNION和子查询等

PRIMARY:表示当查询中包含子查询时,最外层的查询语句则被标记为primary 。

UNION:查询语句中如果在UNION关键字之后出现了第二个SELECT,则被标记为UNION。

UNION RESULT:表示查询中有多个查询结果集做UNION操作。

DEPENDENT UNION:表示子查询中存在UNION操作时,从UNION之后的第二个及之后的SELECT语句都是DEPENDENT UNION。

DEPENDENT SUBQUERY:子查询中UNION 中第一个SELECT查询为DEPENDENT SUBQUERY。

SUBQUERY:子查询内层查询的第一个SELECT。

DERIVED:查询语句中如果from子句的子查询中出现了union关键字则外层select查询将被标记为DERIVED。

MATERIALIZED:表示子查询被物化。

UNCACHEABLE SUBQUERY:表示查询结果集无法缓存的子查询,需要逐次查询。

UNCACHEABLE UNION:表示子查询不可被物化,需要逐次运行

Table

查询涉及的表名或者表的别名

本文作者:张永清, 转载请注明: https://www.cnblogs.com/laoqing/p/16880718.html  来源于博客园 ,本文摘选自《软件性能测试分析与调优实践之路》

Type

表示表连接的类型,包括的类型如下所示,如下的这些类型的性能从高到低的顺序是:null→system→const→eq-ref→ref→fulltext→ref_or_null→index_merge→unique_subquery→index_subquery→range→index→ALL

null:表示不访问任何的表

system:表示表中只有一条记录,相当于系统表,一般可以认为是const类型的特例。

const:表示主键或者唯一索引的常量查询,表中最多只有1行记录符合查询要求,通常const使用到主键或者唯一索引进行定值查询、常量查询,查询的速度非常快。

eq_ref:表示join 查询过程中,关联条件字段走主键或者唯一索引,出来的行数不止一行。eq_ref是一种查询性能很高的 join 操作。

ref:表示非聚集索引的常量查询

fulltext:表示查询的过程中,使用到了 fulltext 索引。

ref_or_null:跟ref查询类似,在ref的查询基础上会多家一个null值的条件查询

index merg:表示索引联合查询,

unique subquery:表示查询走主键的子查询

index subquery:表示查询走非聚集索引的子查询

range:表示查询走索引范围的查询,一般包括:=、<>、>、>=、<、<=、IS NULL、BETWEEN、IN、<=> 等范围。

index:表示通过索引做扫描查询。

All:表示全表扫描,性能最差

possible_keys

查询时预计可能会使用的索引,这里说的索引只是可能会用到,实际查询不一定会用到。

Key

实际查询时真实使用的索引

key_len

使用的索引长度

Ref

关联信息

Rows

查询时扫描的数据记录行数

Extra

表示查询特性的使用情况,常用的查询特性如下所示。

Using index:表示使用了索引

Using index conditio:表示使用了索引做过滤

Using MRR:表示使用了索引做内部排序

Using where:表示使用了where条件

Using temporary:表示使用了临时表。

Using filesort:表示使用文件排序,一般指无法利用索引来完成的排序

 

 

 

转载自张永清: https://www.cnblogs.com/laoqing/p/16880718.html

 

 

标签:表示,index,关键字,UNION,explain,查询,索引,mysql,ref
From: https://www.cnblogs.com/JiHC/p/16882779.html

相关文章

  • 腾讯云服务器mysql
    添加规则[root@VM-4-8-centos~]#cd/usr/local/src/[root@VM-4-8-centossrc]#wgethttp://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm[root@VM-......
  • mysql免安装版服务启动
    1.以管理员身份启动cmd2.cd到mysql的bin目录下3.执行:mysqld-install提示:  如果不以管理员身份运行,有可能出现以下错误:  4.这个时候,运行输入"servic......
  • MySQL union 和 order by 同时使用
    目录一、出现错误的情况二、解决上述问题的两种方法三、案例分析:求解:常见的错误解法(1)使用union和多个orderby不加括号【报错】(2)orderby在union子句中不起作用正......
  • MySQL的一些认知
    MyISAM与InnoDBMyISAM的优点:1.快速查询唯一键2.支持全文索引3.选择count(*)速度快4.磁盘空间占用较少缺点:1.表级别的锁定,运用程序写入时间大于5%,表锁定会降低运用程序速度2.......
  • MySQL常用函数
    MySQL数值型函数函数名称作 用ABS求绝对值SQRT求二次方根MOD求余数CEIL和 CEILING两个函数功能相同,都是返回不小于参数的最小整数,即向上取整FLOOR向下取整,返回值转化为......
  • MySQL主键索引和二级索引
    Mysql的索引首先,我们常说的索引类型有:主键索引、唯一索引、普通索引、前缀索引、全文索引,甚至还有聚簇索引、覆盖索引等。其中,唯一索引、普通索引、前缀索引等索引属于......
  • MySQL索引
    MySQL索引是一种帮助快速查找数据的数据结构,通过索引能够快速找到数据所在位置。场景的索引数据结构有:Hash表(通过hash算法快速定位数据,但不适合范围查询,因为需要每个key都......
  • 【转】Mysql分表和分区的区别
     一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块......
  • 插入MySQL报错‘pymysql.err.DataError: (1406, "Data too long for column 'url' at
    错误重现:插入MySQL报错‘pymysql.err.DataError:(1406,"Datatoolongforcolumn'url'atrow1")’解决方法:在插入MySQL的字符太多,此时将MySQL的模式改为非严格模......
  • mysql判断主从状态
    参考:https://blog.csdn.net/bigtree_3721/article/details/76735214?locationNum=5&fps=1showslavestatus\G会显示主从同步状态例如MySQL>showslavestatus\G***......