摘要:当我们希望MySQL能够以更高的性能在查询中运行时,最好的方法是找出MySQL如何优化和执行查询。
1.客户端首先将查询语句发送给服务器
2.服务器检查缓存,如果存在,则返回
3.执行SQL解析,生成解析树,预处理,生成第二个分析树,最后传递优化器以生成真实的执行计划
4.根据执行计划,请致电存储引擎的API执行查询
5.将结果退还给客户。
使用Show fult ProcessList命令查看MySQL Server的某些线程的状态
静态优化类似于“汇编周期优化”,仅相关
动态优化取决于索引的数量以及在哪里获得值。执行次数可能不仅仅是静态优化。
1.遍历A的每一线(此时,一个表格为 *从a.xx = y的where *)
2.在该行中,确定A的ID,然后您将获得一个临时表,临时表为(从B中选择 * a.id = ID)
3.然后使用此临时表和一条线来剪接和输出更多行。
4.然后使用此处的结果作为临时表,以使用更高的相关性(嵌套查询的含义)。
1.两个传输分类:首先将字段分类,以及序列号。排序字段后,根据行索引读取阅读的优点:排序时占据小记忆。删除范围:排序后阅读过程将非常慢,并且根据读取读数并不是很方便序列号
2.单个传输的单个分类:直接读取行(仅需要在行中使用的列,不一定是整个行),然后是分类的优点:读取顺序io的所有行,快速读取速度劣势:可能是可能导致文件排序的可能性
如果按列的顺序来自关联的第一表,则在第一个表格加入时进行排序。
此外,!交叉截面连接完成,然后排序!即使在使用限制之后,所有加入+排序之后,然后限制!
本文分享了华为云社区的“全面流程分析的执行”,作者:BreakDraw。