MySQL之EXPLAIN

关键词: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('英语');
student表数据

 

class表数据
student表索引
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值