MySQL执行计划介绍

MySQL执行计划介绍
腐烂的SQL不仅直接影响SQL的响应时间,而且会影响DB的性能,导致其他正常SQL的响应时间更长。我只是列举一些常见的情况,希望能对你有所帮助。

试验台结构:

复制代码代码如下所示:
创建表(t1)
` C1 ` int(11)不为空的默认'0',
` C2 ` varchar(128)默认为空,
` C3 ` varchar(64)默认为空,
C4 int(11)默认NULL,
主键(C1),
关键` ind_c2 `(` C2 `),
关键` ind_c4 `(` C4 `)
InnoDB引擎=默认的字符集utf8)
创建表(T2)

` C1 ` int(11)不为空的默认'0',
` C2 ` varchar(128)默认为空,
` C3 ` varchar(64)默认为空,
C4 int(11)默认NULL,
主键(C1),
关键` ind_c2 `(` C2 `)
InnoDB引擎=默认的字符集utf8)

创建表(T3)
` C1 ` int(11)不为空的默认'0',
` C2 ` varchar(128)默认为空,
` C3 ` varchar(64)默认为空,
C4 int(11)默认NULL,
主键(C1),
关键` ind_c2 `(` C2 `)
InnoDB引擎=默认的字符集utf8)

1。查看MySQL执行计划

解释选择…

2。执行计划中所载的信息
(1)身份证

意义,选择句子或手术台的顺序。

译:ID是相同的,执行顺序是从上到下,下面的执行计划表明,T1表的第一个工作,那么T2表的操作,和T3表最后操作。
译:如果有子查询,子查询(内查询)ID大于子查询(外部查询),和子查询时,首先执行。更大的ID,优先级越高。
(2)。select_type

含义:SELECT语句的类型

Type:
A.SIMPLE: no subqueries or UNION are included in the query

如果任何复杂的部分是包含在B查询,最外层的查询标记为:初级

C.包含在选择或在列表的子查询,子查询,标记为:

D.包含子查询,在列表中被标记为:源(闫胜)

如果第二选择后出现的联盟,它被标记为联盟;如果联盟包括在FROM子句中的子查询,

外部选择将标记为:派生

F.从联合表中获得结果的选择标记为:联合结果

如:
id显示为表的1,表示结果来自派生表2。
我是一个查询2,读了T3表

id是3类型的联合,第二个选择是联合,第一次执行;

id是一个null类型,即联合结果,表示ID 1的操作和ID为3的结果集被合并。

执行顺序3 - > 2 - 1
(3)类型

意思是:使用记录行的方式,也就是MySQL访问的方式。
A.ALL:全表扫描,MySQL会遍历整个表中找到匹配的行
b.index:全索引扫描,索引和所有的区别,就是指数型是唯一遍历索引,而索引比记录一般较小。
由于索引包含C1,所以可以通过索引扫描实现查询C1和C2。

C.range:索引范围扫描,该指数在一个点开始扫描,返回的匹配范围线,一般在之间,和其他查询
注意:范围类型一定要使用索引扫描,否则类型为全部。
D.ref:一个非唯一索引扫描返回单个值匹配的所有行。一个非唯一的前缀使用非唯一索引常见的搜索,唯一索引
t2.c4是非唯一索引

e.eq_ref:唯一索引扫描。对于每个索引键,表中只有一个记录与之匹配。
t2.c1是主要的关键指标,和主键索引是唯一索引

f.const,系统:当MySQL优化查询的一部分转换为一个常数,使用这些类型的访问。如果主关键词放置在名单上,

MySQL可以将查询转换为常量,而系统是const类型的特殊情况,当查询表只有一行时使用系统。
(4)。possible_keys

指出:在MySQL中可以使用哪个索引来查找表中的行。如果在查询字段中有索引,则该索引将被列出,但不会被查询。

(5)钥匙
意思是:如果没有索引,MySQL实际上在查询中使用的索引将显示为null。

(6)key_len

索引中使用的字节数,可用于计算查询中使用的索引的长度。

(7)裁判

意思是:用于连接查询以表示特定表的列被引用。

(8)行

含义:根据表的统计信息和索引选择,MySQL估计查找所需记录所需的行数,这是不准确的,仅具有参考意义。

(9)额外

说明:显示更多附加信息

使用索引,表示使用索引。

在哪里使用,这意味着通过条件过滤。

C.使用临时表,表示临时表的使用,在分组和排序中通用。

D.使用filesort,说明索引排序不能使用和档案整理要求

的译文:t1.c3列没有索引
译:使用索引列t1.c2

tag:执行计划电脑软件mysql

相关内容