MySQL的语句执行顺序
发布时间:2020-05-31 19:22 点击量:
MySQL的语句分为11个步骤。如下图所示,从操作总是首先执行,而限制操作是最后执行的。这些操作中的每一个都会产生一个虚拟表,作为流程的输入,但是这些虚拟表对用户来说是透明的,结果只会返回最后一个虚拟表。如果语句中没有指定子句,将跳过相应的步骤。
方法/步骤1让我们详细分析查询处理的每个阶段
计算左表和右表的笛卡尔乘积。生成虚拟表VT1
2ON
:虚拟表VT1已被打开过滤,只有那些匹配的行将被记录在虚拟表VT2中。
3JOIN
:如果指定了OUTER联接(如左联接和右联接),则保留表中不匹配的行将作为外部行添加到虚拟表VT2,以生成虚拟表VT3。如果VT3,rug from子句包含两个以上的表,那么将对由前一个JOIN连接和下一个表生成的结果VT3重复步骤1到3的三个步骤,直到处理完所有的表。
4在哪里
:用WHERE条件过滤虚拟表VT3。只有匹配的记录才会被插入虚拟表VT4。
5分组依据
根据group by子句中的列,VT4中的记录被分组以生成VT5。
6CUBE | ROLLUP
:对表VT5执行多维数据集或汇总操作以生成表VT6。
7拥有
:对虚拟表VT6应用过滤,只有匹配的记录才会被插入到虚拟表VT7中。
8选择
:执行选择操作,选择指定的列,并将其插入虚拟表VT8。
9独特
:重编VT8中的记录。生成虚拟表VT9。
10订购方
:对虚拟表VT9中的记录进行排序,以生成虚拟表VT10。
11极限
:取出指定行的记录,生成虚拟表VT11,并返回结果。
结束语主观能动性有助于缩短梦想的距离
相关推荐