关键词:explain 索引
EXPLAIN提供了关于MySQL如何执行语句的信息,即执行计划。可以用在SELECT、UPDATE、INSERT、REPLACE等语句前,本文主要讨论的是SELECT。通常使用EXPLAIN SELECT,结合分析返回结果,对SQL语句进行优化。
<文中案例操作使用的MySQL版本为:5.7.32,版本不同会存在差异>
比如下文中的例子,同样的查询语句,通过EXPLAINE查看执行计划,得到的结果有所不同。
5.1.73版本:

5.7.31版本:

从上面的两个结果比较可以看出,版本的不同,不仅仅是字段中的内容不同,而且,5.7.31版本要比5.1.73版本中多了两列:partitions、filtered。
█ 使用
以下结果截图,如果没有指明具体的版本,都是在5.7.31版本中执行后的结果。
①创建表和索引,并插入数据
drop table if exists STUDENT;
create table STUDENT(
id int primary key auto_increment,
car_id varchar(5),
first_name varchar(10),
last_name varchar(10),
class_id int,
index index_name(first_name, last_name)
);
create index index_car_id on STUDENT(car_id);
insert into STUDENT(car_id,first_name,last_name,class_id) values('111','Jim', 'Green',1);
insert into STUDENT(car_id,first_name,last_name,class_id) values('111','Dave', 'Brice',1);
insert into STUDENT(car_id,first_name,last_name,class_id) values('222','Ann', 'King',2);
insert into STUDENT(car_id,first_name,last_name,class_id) values('222','Rose', 'Rice',3);
insert into STUDENT(car_id,first_name,last_name,class_id) values('333','jack', 'ma',4);
drop table if exists CLASS;
create table CLASS(
id int primary key auto_increment,
name varchar(10)
);
create index index_name on CLASS(name);
insert into CLASS(name) values('语文');
insert into CLASS(name) values('数学');
insert into CLASS(name) values('英语');

EXPLAIN是用于查看MySQL执行SQL语句的详细计划,帮助进行优化。本文介绍了不同MySQL版本中EXPLAIN的差异,以及如何使用EXPLAIN查看执行计划,包括id、select_type、table、type等字段的含义,并通过示例解析了各种查询类型的执行计划,为SQL优化提供参考。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



