详解 MySQL 5.7 优化:Explain 执行计划

mysql视频教程 栏目介绍Explain 执行计划 推荐(免费):mysql视频教程 目录 1. 介绍 2. Explain 结果列详解 2.1 id 2.2 select_type 2.3 table 2.4 partitions 2.5 type(非常重要) 2.6 possible_keys 2.7 key 2.8 k

    mysql视频教程栏目介绍Explain 执行计划<p><img src="https://img.mryunwei.com/uploads/2023/04/20230419012329379.jpg"></p>

推荐(免费):mysql视频教程

目录

字符串:常见的是 char(n) 和 varchar(n),从 MySQL 5.0.3 之后,n 均表示字符数,而不是字节数,如果是 UTF-8,一个数字或字母占1个字节,一个汉字占3个字节。

如果字段允许设置为 NULL,则需要 1 字节来记录是否为 NULL; Not NULL 的列则不需要。

2.9 ref

显示了在使用 key 列中实际的索引时,表查找时所用到的列名和常量;常见的为 const 常量或索引关联查询的字段(列)名。

显示预计查询的结果数,并不是真正的结果集中的记录(行)数,仅供参考。

2.11 filtered

未完待续。。。

2.12 Extra

这一列展示的是额外的信息,存在很多值,且在不同的场景下以及不同版本的 MySQL 所表示的意思也不同,只能是表示大概的意思并且仅做优化参考,这里只介绍常见的值。

Using index:使用覆盖索引,在 type 相同的情况下, Extra 的值为 Using index 要比为 NULL 性能高。

比如 banji 表,存在 id,name,create_time 列,存在 id 主键与 name 普通索引。

这种情况一般要对查询的列添加相对应的索引来进行优化。

Using index condition:非覆盖索引查询并进行了回表,并且辅助索引使用了条件查询语句(where 或其他)。

比如 banji_student 关系表,存在 id,banji_id,student_id,create_time 列,存在 id 主键 和 banji_id 与 student_id 的组合(联合)索引。