MySQL执行计划介绍
试验台结构:
复制代码代码如下所示:
创建表(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