(MySQL性能优化)Explain分析sql语句优劣

在MySQL如何优化的问题上,怎么判断sql语句是否已经优化了呢,我们需要一个标准, Explain就是我们的标准!!

Explain是什么?Explain有什么用?


准备工作:

1.创建article表


插入数据


表结构:文章的信息:有作者、目录、阅读数、评论数、标题号、内容(简单的表,用于演示~)



实验过程:

1.要求查询出所有文章的信息(普通查询)


2.使用explain(就是在sql语句前,加explain而已,超简单~~,但结果就不简单了,根本看不懂是不是,好,下面这节课正是开始~)


3.id列,这里的id只有两种情况,id相同和id不同

id相同:执行顺序从上往下;

id不同:执行顺序从大往小

执行顺序是什么:从哪个表开始执行,table列就是我们的表,当前查询,只用到了一个表article,所以我们并不能很好的体会,这里先记着,后面再举例子解释哈。

4.select_type列:



5.table列就是我们的表,不解释。

6.partition列也不用看

7.type列,system最好,all最差,这个很复杂,后面给个链接你们看



8.possible_keys列,指代mysql觉得我们应该会用哪些index

9.key列,我们实际上用了哪些index,有最好,null最差

10.key_len列,表示索引中使用的字节数,在不损失精度的情况下,长度越短越好。

11.ref列:


12.Rows列:查询记录越少,越快,mysql遍历的行数。

13.filtered列:不重要

14.Extra:超重要,出现下面几种数据需要留意






例子:下面这个例子(id是主键,没有其他index了),id看,mysql会先执行3,2,1(从大到小),在sql语句看,先执行第三个select,t3,再执行第二个select,t1,最后执行第一个select,t2。因为t3查询没有index,所以type值是all垫底,其他两个因为用了id主键,const效率还行,ref代表什么值与索引匹配,rows代表三个查询mysql都搜了一行

一共三行。


猜你喜欢

转载自blog.csdn.net/qq_38056704/article/details/80030485