精华内容
下载资源
问答
  • explain详解
    2022-05-18 09:44:59

    Explain工具介绍
    使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈
    在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL

    explain中的列
    接下来我们将展示 explain 中每个列的信息。

    id列
    id列的编号是 select 的序列号,有几个 select 就有几个id,并且id的顺序是按 select 出现的顺序增长的。
    id列越大执行优先级越高,id相同则从上往下执行,id为NULL最后执行。
    select_type列
    select_type 表示对应行是简单还是复杂的查询。
    simple:简单查询。查询不包含子查询和union
    primary:复杂查询中最外层的 select
    subquery:包含在 select 中的子查询(不在 from 子句中)
    derived:包含在 from 子句中的子查询。MySQL会将结果存放在一个临时表中,也称为派生表(derived的英文含义)
    union:在 union 中的第二个和随后的 select

    table列
    这一列表示 explain 的一行正在访问哪个表。
    当 from 子句中有子查询时,table列是 格式,表示当前查询依赖 id=N 的查询,于是先执行 id=N 的查询。
    当有 union 时,UNION RESULT 的 table 列的值为<union1,2>,1和2表示参与 union 的 select 行id。
    type列
    这一列表示关联类型或访问类型,即MySQL决定如何查找表中的行,查找数据行记录的大概范围。
    依次从最优到最差分别为:system > const > eq_ref > ref > range > index > ALL
    一般来说,得保证查询达到range级别,最好达到ref
    NULL:mysql能够在优化阶段分解查询语句,在执行阶段用不着再访问表或索引。例如:在索引列中选取最小值,可以单独查找索引来完成,不需要在执行时访问表
    possible_keys列
    这一列显示查询可能使用哪些索引来查找。
    explain 时可能出现 possible_keys 有列,而 key 显示 NULL 的情况,这种情况是因为表中数据不多,mysql认为索引对此查询帮助不大,选择了全表查询。
    如果该列是NULL,则没有相关的索引。在这种情况下,可以通过检查 where 子句看是否可以创造一个适当的索引来提高查询性能,然后用 explain 查看效果。
    key列
    这一列显示mysql实际采用哪个索引来优化对该表的访问。
    如果没有使用索引,则该列是 NULL。如果想强制mysql使用或忽视possible_keys列中的索引,在查询中使用 force index、ignore index。
    key_len列
    这一列显示了mysql在索引里使用的字节数,通过这个值可以算出具体使用了索引中的哪些列。
    举例来说,film_actor的联合索引 idx_film_actor_id 由 film_id 和 actor_id 两个int列组成,并且每个int是4字节。通
    过结果中的key_len=4可推断出查询使用了第一个列:film_id列来执行索引查找。
    ref列
    这一列显示了在key列记录的索引中,表查找值所用到的列或常量,常见的有:const(常量),字段名(例:film.id)
    rows列
    这一列是mysql估计要读取并检测的行数,注意这个不是结果集里的行数。
    Extra列
    这一列展示的是额外信息。

    更多相关内容
  • 02-VIP-Explain详解与索引最佳实践.pdf
  • Explain详解与索引最佳实践.pdf
  • SQL索引优化与Explain详解最佳实践.pdf
  • explain详解

    千次阅读 2020-08-24 22:17:30
    下面来详解使用explain后返回的数据字段的含义 首先这是表结构: DROP TABLE IF EXISTS `actor`; 3 CREATE TABLE `actor` ( 4 `id` int(11) NOT NULL, 5 `name` varchar(45) DEFAULT NULL, 6 `updat

    explain是干嘛的?

    使用explain可以模拟优化器执行sql语句,分析查询语句的结构,是否使用索引等等

    使用方法:
    在查询语句select关键字前面加上explain关键字,如下图的格式,然后就会返回分析的结果

    在这里插入图片描述
    下面来详解使用explain后返回的数据字段的含义

    首先这是表结构:

    DROP TABLE IF EXISTS `actor`; 3 CREATE TABLE `actor` ( 4 `id` int(11) NOT NULL, 5 `name` varchar(45) DEFAULT NULL, 6 `update_time` datetime DEFAULT NULL, 7 PRIMARY KEY (`id`) 8 ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 910 INSERT INTO `actor` (`id`, `name`, `update_time`) VALUES (1,'a','2017‐12‐22 15:27:18'), (2,'b','20 17‐12‐22 15:27:18'), (3,'c','2017‐12‐22 15:27:18'); 1112 DROP TABLE IF EXISTS `film`; 13 CREATE TABLE `film` ( 14 `id` int(11) NOT NULL AUTO_INCREMENT, 15 `name` varchar(10) DEFAULT NULL, 16 PRIMARY KEY (`id`), 17 KEY `idx_name` (`name`) 18 ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 1920 INSERT INTO `film` (`id`, `name`) VALUES (3,'film0'),(1,'film1'),(2,'film2'); 2122 DROP TABLE IF EXISTS `film_actor`; 23 CREATE TABLE `film_actor` ( 24 `id` int(11) NOT NULL, 25 `film_id` int(11) NOT NULL, 26 `actor_id` int(11) NOT NULL, 27 `remark` varchar(255) DEFAULT NULL, 28 PRIMARY KEY (`id`), 29 KEY `idx_film_actor_id` (`film_id`,`actor_id`) 30 ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 3132 INSERT INTO `film_actor` (`id`, `film_id`, `actor_id`) VALUES (1,1,1),(2,1,2),(3,2,1);
    
    1. id字段列:

    id有几个就代表这个sql语句被解析成多少个select. 其中id越大,代表执行的优先级别越高,id相等则从上到下依次执行,id为NULL的最后执行

     explain select * from film t1 left join film_actor t2 on t1.id=t2.film_id;
    

    在这里插入图片描述
    2.select_type字段列:代表查询的语句的复杂类型
    1).simple:简单查询
    2).primary:复合查询的最外层查询
    3).subquery:是select 后面的子查询

     explain select (select 1 from actor where id = 1);
    

    在这里插入图片描述

    4).derived是紧跟在from后面的子查询,MySQL会将结果存放在一个临时表中,也称为派生表
    在这里插入图片描述
    为什么这里查出来的是一个简单的语句呢?而不是想象中的derived类型呢,原因很简单,在mysql5.7以后,对派生表进行优化了,优化器引入derived_merge。当然我们也可以通过设置参数将派生表优化给关闭。

    set optimizer_switch='derived_merge=off'
    

    在这里插入图片描述
    5)union:紧跟union后面的select
    3.table字段列:表示访问的是哪一个表
    4.type列:表示MYSQL决定如何查找表中的行。
    他有七个级别,依次从最优到最差分别为:system>const>eq_red>red>range>index>ALL
    一般来说,最好达到ref级别,实在达不到,range级别也不差。
    1)NULL:当type为null时,表示查询语句在执行过程中被优化,不用访问表,直接从索引中得到值

    EXPLAIN SELECT min(id) from film;
    

    在这里插入图片描述
    2)const:表示对查询的部分进行优化,并将其转化为一个常量。用于primary key 或者unique key的所有列与常量比较时,所以表中只有一条记录,查询速度快。

    EXPLAIN SELECT *from film where id =1;
    

    在这里插入图片描述
    3)eq_ref:primary key 或者unique key 索引的所有部分被连接使用,最多只返回一条符合条件的记录。

     explain select * from film_actor left join film on film_actor.film_id = film.id;
    

    在这里插入图片描述
    4)ref:相比rq_ref,不使用唯一索引,而是使用普通索引或者唯一性索引的部分前缀,索引要和某个值相比较,可能会找到多个符合条件的行

    explain select * from film where name = 'film1';
    

    在这里插入图片描述
    5)range:范围扫描通常出现在in(),between,>,<,>=等操作中。

    explain select * from actor where id > 1;
    

    在这里插入图片描述
    6)index:扫描全索引,一般是扫描某个二级索引,她不会从索引根节点查找,而是直接对二级索引的叶子节点遍历和扫描。速度较慢。这种一般为使用了覆盖索引,二级索引一般比较小。(因为select * 这里面包含二级索引字段,所以就会走二级索引)

    explain select * from film;
    

    7)all:即全表扫描,扫描聚集索引下的所有叶子节点,因为select * 这里面的字段都没有建立除了聚集索引外的索引,所以就只会走聚集索引,如果不知道聚集索引的可以去看一下这篇博文(https://editor.csdn.net/md/?articleId=107474948),因为聚集索引叶子节点存了data数据多,所以效率就会低

    explain select * from actor;
    

    在这里插入图片描述
    5.possible_keys列
    表示该查询语句可能使用哪个索引,如果为NULL,则表明没有相关索引以供查询,这时候可以在where语句后面字段加个索引,看是否提高了性能
    6.key列
    表示实际用了哪个索引,如果possible_keys不为空,key为null,说明数据少,不需要走索引,直接全表扫描。
    7.key_len列
    这表示用到的索引字段的字节数

    计算规则如下:
    (当然,索引的最大长度为768,如果超过了这个长度,mysql会做一个类似左前缀索引的处理,将前半部分的字符提取出来做索 引。)


    字符串 :

    • char(n):n字节长度
    • varchar(n):如果是utf-8,则长度 3n + 2 字节,加的2字节用来存储字符串长度

    数值类型:

    • tinyint:1字节
    • smallint:2字节
    • int:4字节
    • bigint:8字节

    时间类型:

    • date:3字节
    • timestamp:4字节
    • datetime:8字节
    • 如果字段允许为 NULL,需要1字节记录是否为 NULL

    8. ref列
    这一列显示了在key列记录的索引中,表查找值所用到的列或常量,常见的有:const(常量),字段名(例:film.id)
    9. rows列
    这一列是mysql估计要读取并检测的行数,注意这个不是结果集里的行数。
    10. Extra列
    这一列展示的是额外信息。常见的重要值如下
    1)Using index:使用覆盖索引 覆盖索引定义:如果select后面查询的字段都可以从这个索引的树中 获取,这种情况一般可以说是用到了覆盖索引,extra里一般都有using index;覆盖索引一般针对的是辅助索引,整个 查询结果只通过辅助索引就能拿到结果,不需要通过辅助索引树找到主键
    在这里插入图片描述
    2)Using where:where后面查询的字段没有建立索引,使用 where 语句来处理结果
    在这里插入图片描述
    3)Using index condition:查询的列不完全被索引覆盖,where条件中是一个前导列的范围;
    在这里插入图片描述
    4)Using temporary:mysql需要创建一张临时表来处理查询。出现这种情况一般是要进行优化的,首先是想到用索 引来优化
    5)Using filesort:将用外部排序而不是索引排序,数据较小时从内存排序,否则需要在磁盘完成排序。这种情况下一 般也是要考虑使用索引来优化的。
    6)Select tables optimized away:使用某些聚合函数(比如 max、min)来访问存在索引的某个字段是

    展开全文
  • Explain 详解

    2020-12-19 20:33:38
    一个程序员 对每个SQL语句 进行explain分析是基本的素养。Explain概述 使用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理你的 SQL 语句的。分 析你的查询语句或是表结构的性能瓶颈。...
    • 前言
      一个程序员 对每个SQL语句 进行explain分析是基本的素养。

      Explain概述

      • 使用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理你的 SQL 语句的。分 析你的查询语句或是表结构的性能瓶颈。 可以帮助选择更好的索引和写出更优化的查询语句。
      • 基本结构在这里插入图片描述

    id

    • id是SQL语句执行的查询顺序,表示查询中执行的select子句或操作表的顺序
    • 一共分为三种情况
      • id相同时:sql语句执行顺序 是由上至下。即可能会有几条select语句的id相同。在相同的id的情况下,这几条语句的执行顺序是由上至下的。
      • id不同的情况: 如果是子查询,id的序号会递增,id值越大优先级越高,也就是说 id大的select语句,会被优先的执行

    select_type

    • 示查询中每个select子句的类型

    (1) SIMPLE(简单SELECT,不使用UNION或子查询等): 简单的SQL查询,这种查询不包含子查询或者UNION

    (2) PRIMARY(查询中若包含任何复杂的子部分,最外层的select被标记为PRIMARY)

    (3) UNION:若第二select语句出现在union之后, 那么这个select查询类型就会被标记为union;
    union包含在from子句的子查询中外层select查询将被标记为DERIVED .

    (4) DEPENDENT UNION(UNION中的第二个或后面的SELECT语句,取决于外面的查询)

    (5) UNION RESULT(UNION的结果)

    (6) SUBQUERY(子查询中的第一个SELECT)

    (7) DEPENDENT SUBQUERY(子查询中的第一个SELECT,取决于外面的查询)

    (8) DERIVED(派生表的SELECT, FROM子句的子查询):在from列表里包含的子查询被标记为DERIVED(衍生),MYSQL递归执行这些子查询,并把查询结果存放到临时表里面

    (9) UNCACHEABLE SUBQUERY(一个子查询的结果不能被缓存,必须重新评估外链接的第一行)

    type

    • 表示显示查询使用的访问类型。类型排序 system>const>eq_ref>ref>range>index>ALL

    常用的类型有: ALL, index, range, ref, eq_ref, const, system, NULL(从左到右,性能从差到好)

    ALL:Full Table Scan, MySQL将遍历全表以找到匹配的行,所以在实际开发中,尽量不要使用select*。 因为这种查询是使用全部查询。

    index: Full Index Scan,index与ALL区别为index类型只遍历索引树。即mysql通过索引查询数据。直接从根节点搜索数据。节点值与查找值 进行比较查找。

    range:只检索给定范围的行,使用一个索引来选择行。:即进行范围的查找。 key列显示使用哪个索引,一般是在where语句中出现了between,<>,in等的查询。这种范围扫描索引比全表扫描要好,因为只需要开始于索引的某一点,结束于另一点,不用扫描全部的索引。

    ref: 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值。非唯一性索引扫描,返回匹配某个单独值的所有行。本质也是一种所有访问。

    eq_ref: 类似ref,区别就在使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配,简单来说,就是多表连接中使用primary key或者 unique key作为关联条件

    const、system: 当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量,system是const类型的特例,当查询的表只有一行的情况下,使用system

    NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成。

    possible_key AND key

    • possible_key : 显示可能应用在这张表中的索引,一个或多个。查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用。
    • key :实际使用的索引。如果为null,则没有使用索引。查询中若使用了覆盖索引,则该索引仅出现在key列表中。
    • key_ len: 索引的最大长度,显示的值为索引字段的最大可能长度,但并非实际使用长度。

    ref

    • 显示索引的哪一列 被使用了,如果可能的话,是一个常数。哪些列或常量被用于查找所有列上的值。 告诉使用者,有没有使用到索引,以及是使用的哪一个索引。(被实际使用的索引)

    row

    • 根据表统计信息,及其索引选用情况,大致估算找到所需要的读取的行数。

    Extra

    • 该列包含MySQL解决查询的详细信息,有以下几种情况:

    • Using where:列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候,表示mysql服务器将在存储引擎检索行后再进行过滤

    • Using temporary:表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询

    • Using filesort:MySQL中无法利用索引完成的排序操作称为“文件排序”。----->这是查询最糟糕的情况

    • Using index:表示是使用的索引查找。如果同时出现了using where 表明索引被用来执行索引键值的查找。--------》最好的情况

    • Using join buffer:改值强调了在获取连接条件时没有使用索引,并且需要连接缓冲区来存储中间结果。如果出现了这个值,那应该注意,根据查询的具体情况可能需要添加索引来改进能。

    • Impossible where:这个值强调了where语句会导致没有符合条件的行

    • Select tables optimized away:这个值意味着仅通过使用索引,优化器可能仅从聚合函数结果中返回一行‘

    什么是覆盖索引?

    • 当我们使用的select语句查询数据时,查询的数据恰好是索引列对应的数据,没有查询其他的数据行,这就是覆盖索引。
    展开全文
  • 使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈
  • 使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返 回执行计划的信息,而不是执行这条...
  • 使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈。 文档主要是使用 explain 的例子和索引的最佳实践
  • 数据库 explain详解

    2020-12-14 18:03:57
    数据库 explain详解 文章目录数据库 explain详解1、什么是explain2、explain有什么用3、explain个字段详解3.1 id详解3.2 select_type 详解3.3 table 详解3.4 type 详解3.5 possible_keys3.6 key3.7 key_len3.8 ref...
  • Mysql Explain 详解

    2016-10-17 14:08:31
    Mysql Explain 详解
  • mysql中explain详解

    2021-03-23 09:17:36
    explain能干啥 mysql官方介绍: When EXPLAIN is used with an explainable statement, MySQL displays information from the optimizer about the statement execution plan. That is, MySQL explains how it ...

    explain能干啥

    mysql官方介绍:

    When EXPLAIN is used with an explainable statement, MySQL displays
    information from the optimizer about the statement execution plan.
    That is, MySQL explains how it would process the statement, including
    information about how tables are joined and in which order.

    explain能解释mysql如何处理SQL语句,表的加载顺序,表是如何连接,以及索引使用情况。是SQL优化的重要工具

    explain详解

    下图是explain的各个字段
    在这里插入图片描述

    首先我们需要理解各个字段的含义,才能更好用好explain这个关键字。

    id

    id相同,执行顺序从上之下
    id不同,执行顺序从大到小
    id相同不同,同时存在,遵守1、2规则
    下图所示:
    在这里插入图片描述
    可以这样理解,执行顺序从大到小,先执行id为2的,然后执行id为1的(先A再B,规则1);执行顺序为:第三行,第一行,第二行

    select_type

    查询中每个select的查询类型,如下:

    1. SIMPLE:简单select,不使用union和子查询
      在这里插入图片描述

    2. PRIMARY:查询中包含任何复杂的子部分,最外层的select被标记为PRIMARY
      在这里插入图片描述

    3. UNION:union中第二个后面的select语句

    4. DEPENDENT UNION:一般是子查询中的第二个select语句(取决于外查询,mysql内部也有些优化)

    5. UNION RESULT:union的结果
      在这里插入图片描述

    6. SUBQUERY:子查询中的第一个select
      在这里插入图片描述

    7. DEPENDENT SUBQUERY:子查询中第一个select,取决于外查询(在mysql中会有些优化,有些dependent会直接优化成simple)

    8. DERIVED:派生表的select(from子句的子查询)
      奇怪的是在5.7的版本中竟然只有一个SIMPLE
      DERIVED
      在这里插入图片描述

    官网对derived table的定义是:

    A derived table is an expression that generates a table within the
    scope of a query FROM clause.

    应该是mysql内部进行了优化。

    table

    显示数据来自于哪个表,有时不是真实的表的名字(虚拟表),虚拟表最后一位是数字,代表id为多少的查询。

    type

    这个字段是我们优化要重点关注的字段,这个字段直接反映我们SQL的性能是否高效。

    这个字段值较多,这里我只重点关注我们开发中经常用到的几个字段:system,const,eq_ref,ref,range,index,all;
    性能由好到差依次为:system>const>eq_ref>ref>range>index>all(一定要牢记)

    1. system:当表中只有一条记录并且该表使用的存储引擎(比如MyISAM或MEMORY)的统计数据是精确的。
      在这里插入图片描述

    2. const:表示通过索引一次就找到了,const用于比较primary key或者unique索引。因为只匹配一行数据,所以很快。
      在这里插入图片描述

    3. eq_ref:唯一性索引扫描,表中只有一条记录与之匹配。一般是两表关联,关联条件中的字段是主键或唯一索引。
      在这里插入图片描述

    4. ref:非唯一行索引扫描,返回匹配某个单独值的所有行
      在这里插入图片描述

    5. range:检索给定范围的行,一般条件查询中出现了>、<、in、between等查询
      在这里插入图片描述

    6. index:遍历索引树。通常比ALL快,因为索引文件通常比数据文件小。all和index都是读全表,但index是从索引中检索的,而all是从硬盘中检索的。
      在这里插入图片描述

    7. all:遍历全表以找到匹配的行
      在这里插入图片描述

    possible_keys

    显示可能应用在这张表中的索引,但不一定被查询实际使用

    key

    实际使用的索引。

    key_len

    表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度。一般来说,索引长度越长表示精度越高,效率偏低;长度越短,效率高,但精度就偏低。并不是真正使用索引的长度,是个预估值。

    ref

    表示哪一列被使用了,常数表示这一列等于某个常数。

    rows

    大致找到所需记录需要读取的行数。

    filter

    表示选取的行和读取的行的百分比,100表示选取了100%,80表示读取了80%。

    extra

    一些重要的额外信息

    1. Using filesort:使用外部的索引排序,而不是按照表内的索引顺序进行读取。(一般需要优化)
    2. Using temporary:使用了临时表保存中间结果。常见于排序order by和分组查询group by(最好优化)
    3. Using index:表示select语句中使用了覆盖索引,直接冲索引中取值,而不需要回行(从磁盘中取数据)
    4. Using where:使用了where过滤
    5. Using index condition:5.6之后新增的,表示查询的列有非索引的列,先判断索引的条件,以减少磁盘的IO
    6. Using join buffer:使用了连接缓存
    7. impossible where:where子句的值总是false
      还有一些,基本上很少遇到,就不作说明了。

    作者:水木清华_f221
    链接:https://www.jianshu.com/p/be1c86303c80
    来源:简书

    展开全文
  • EXPLAIN详解

    万次阅读 2020-09-18 14:30:38
    例如explain select * from t where name='user_3' 概要描述: id:选择标识符 select_type:表示查询的类型。 table:输出结果集的表 partitions:匹配的分区 type:表示表的连接类型 possible_keys:表示查询时,可能...
  • explain 两个变种 (1)explain extended:会在 explain 的基础上额外提供一些查询优化的信息。紧随其后通过show warnings命令可以得到优化后的查询语句,从而看出优化器优化了什么。额外还有 filtered 列,是一个...
  • mysql explain详解1

    2022-08-04 13:54:29
    摘要视图订阅登录 | 注册61919次千里之外56篇1篇0篇7条网页转PDF网页转PDF会有如下结果第二条语句使用了union2.4 dependent uni
  • explain详解 explain的语法: {EXPLAIN | DESCRIBE | DESC} tbl_name [col_name | wild] {EXPLAIN | DESCRIBE | DESC} [explain_type] {explainable_stmt | FORCONNECTION connection_id} explain_type: { ...
  • 文章目录一、Explain工具介绍二、Explain分析示例explain 两个变种explain中的列三、索引最佳实践索引使用总结:总结 一、Explain工具介绍 使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构...
  • MySQL EXPLAIN详解

    2021-01-19 16:13:20
    MySQL EXPLAIN命令是查询性能优化不可缺少的一部分,本文主要讲解explain命令的使用及相关参数说明。EXPLAIN Output Columnsidid是用来顺序标识整个查询中SELELCT 语句的,在嵌套查询中id越大的语句越先执行。该值...
  • MYSQL explain详解

    万次阅读 多人点赞 2021-02-23 11:45:54
    explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 虽然这篇文章我写的很长,但看起来真的不会困啊,真的都是干货啊!!!! 先解析一条sql语句,看...
  • mysql explain详解

    2018-03-29 10:40:24
    mysql explain的分析,详解等,以及mysql的优化等方面的技术问题!
  • 【ORACLE Explain 详解

    千次阅读 2021-11-23 18:33:24
    ORACLE Explain 详解前言1.什么是执行计划?2.怎么查看执行计划?3.怎么看懂Oracle执行计划3.1explain执行顺序3.2访问数据的方法3.2.1全表扫描(TABLE ACCESS FULL)3.2.2ROWID扫描(TABLE ACCESS BY ROWID)3.2.3...
  • Greenplum EXPLAIN 详解

    2021-08-27 06:09:06
  • MySQL中EXPLAIN详解

    千次阅读 2021-04-29 08:58:01
    EXPLAIN作为MySQL的性能分析神器,读懂其结果是很有必要的,然而我在各种搜索引擎上竟然找不到特别完整的解读。都是只有重点,没有细节(例如type的取值不全、Extra缺乏完整的介绍等)。 文章目录 ...
  • 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,...
  • MySQL-explain详解说明

    2022-07-07 09:48:16
    MySQL的explain使用字段说明

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,700
精华内容 6,280
关键字:

explain详解

友情链接: Code_psnr.zip