mysql的执行流程和执行顺序

2 02 3 年,朋友问我MySQL的实现过程,我告诉他:
MySQL首先接收查询语句,然后解析语法。
如果在缓存中,则直接使用缓存的结果。
如果没有,它会创建一个查询计划。

执行查询时,会先查找数据源,根据WHERE条件进行过滤、聚合,然后再进行进一步的过滤。
接下来,它选择所需的列,对它们进行排序,最后使用 LIMIT 限制行数。

但是这个顺序并不是固定的,MySQL可能会根据实际情况进行修改,以达到最佳的性能。

朋友听后说:“哦,我明白了。
”算了,你可以想办法的。

MySQl执行SQL过程示例

上周我看到了一个MySQL运行SQL的例子。

2 02 3 年的分析非常详细。

1 .执行流程概览 SE 和 OE 相互作用。
SE负责分析和优化。
OE负责数据采集。

2 具体实施步骤 1 .索引扫描 SE 选择标签。
例如,t1 _1 (a,c) 标签。
条件是a='1 '。
OE 将符合条件的行返回给 SE。
(RS_t1 )
2 过滤结果。
SE过滤器RS_t1 还有其他条件。
b='2 '; c!=4 ,f!='3 '。
滤波后得到RS2 RS2 可以有多条线路。

3 查询处理 处理 SQL 中的子查询。
例如 din(从 d 中选择 t2 )。
方法有:
重复主要查询结果。
对行的每个 d 值执行子查询。

重写子问题。
切换到连接操作。

4 整合结果并设定预测 如果有联系的话。
SE 组合了来自不同表的结果集。
最后,投影 SELECT 子句中指定的列。
a、b、c。

3 实现方法的差异 a 实施方法(a): 特点: 对主查询的每一行执行子查询。
性能:低概率。
子查询被执行多次。

B.实施方法(b): 推理 特点: 尽量将查询条件推到索引扫描级别。
性能:可以改进。
减少处理的数据行数。
c.实施方法(c): 重写子查询。
特点: 切换到连接功能。
性能:通常最大。
利用索引和高效算法。

4 存储引擎和SQL引擎之间的协作 OE提供服务。
登录负责。
SE 是呼叫者。
负责分析和优化。
与迭代器模式交互。
SE逐类处理OE返回的数据。

5 优化和性能考虑。
标签很重要。
确保条件可以使用索引。
后续查询的处理方式会影响性能。
将其重写为联接通常是可行的。
可以通过谓词插值等技术来减少正在处理的数据行数。
通过了解这些过程,可以优化 SQL 和数据库结构。

我不知道这部分。
没问题。
这取决于你。