需要我们使用explain分析SQL的执行计划。
该执行计划可以模拟SQL优化器执行SQL语句,可以帮助我们了解到自己编写SQL的好坏。
SQL优化器自动优化:最开始讲述MySQL执行原理的时候,我们已经知道MySQL有一个优化器,当你写了一个SQL语句的时候,SQL优化器如果认为你写的SQL语句不够好,就会自动写一个好一些的等价SQL去执行。
SQL优化器自动优化功能【会干扰】我们的人为优化功能。当我们查看了SQL执行计划以后,如果写的不好,我们会去优化自己的SQL。当我们以为自己优化的很好的时候,最终的执行计划,并不是按照我们优化好的SQL语句来执行的,而是有时候将我们优化好的SQL改变了,去执行。
SQL优化是一种概率问题,有时候系统会按照我们优化好的SQL去执行结果(优化器觉得你写的差不多,就不会动你的SQL)。有时候优化器仍然会修改我们优化好的SQL,然后再去执行。
1)查看执行计划
语法:explain + SQL语句
eg:explain select * from tb;
2)“执行计划”中需要知道的几个“关键字”
关键字 | 说明 |
---|---|
id | 编号 |
select_type | 查询类型 |
table | 表 |
type | 类型 |
possible_keys | 预测用到的索引 |
key | 实际使用的索引 |
key_len | 实际使用索引的长度 |
ref | 表之间的引用 |
rows | 通过索引查询到的数据量 |
Extra | 额外的信息 |
建表语句和插入数据:
#建表语句 create table course ( cid int(3), cname varchar(20), tid int(3) );
create table teacher ( tid int(3), tname varchar(20), tcid int(3) );
create table teacherCard ( tcid int(3), tcdesc varchar(200) );
#插入数据 insert into course values(1,'java',1);
insert into course values(2,'html',1);
insert into course values(3,'sql',2);
insert into course values(4,'web',3);
insert into teacher values(1,'tz',1);
insert into teacher values(2,'tw',2);
insert into teacher values(3,'tl',3);
insert into teacherCard values(1,'tzdesc');
insert into teacherCard values(2,'twdesc');
insert into teacherCard values(3,'tldesc');
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
本文链接:https://www.jhelp.net/p/wefUrHaCMSMhbCYc (转载请保留)。
本站推荐
-
931
-
927
-
898
-
892
-
870
文章目录