MySQL的执⾏顺序
mysql语句的执行顺序>将对象转为json格式MySQL语句⼀共分为11步,最先执⾏的是FROM操作,最后执⾏的是LIMIT操作,其中每⼀个操作都会产⽣⼀张虚拟的表,这个虚拟的表作为⼀个处理的输⼊,只是虚拟的表对⽤户来说是透明的,只有最后⼀个虚拟表会被作为结果返回,如果没有在语句中指定某⼀个⼦句,那么将会跳过相应的步骤。
在线的json地址(8) SELECT
(9) DISTINCT<Select_list>
(1) FROM <LEFT_TABLE>
开源中国众包(3) <join type> JOIN <right_table>
(2) ON <join_condition>
moved(4) WHERE <where_condition>
(5) GROUP BY <grou_by_list>
(6) WITH {CUBE|ROLLUP}
(7) HAVING <having_condition>
(10) ORDER BY <order_by_list>
(11) LIMIT <limit_number>
详情:
1. FROM : 对 FROM 的左边的表和右边的表计算笛卡尔积,产⽣虚表VT1
2. ON:对虚表VT1 进⾏ON筛选,只有那些符合 <join-condition>的⾏才会被记录在虚表VT2中。
3. JOIN:如果指定了OUTER JOIN(⽐如left join, right join),那么保留表中未匹配的竺就会作为外部添⾏添加到VT2中,产⽣虚表
VT3,rug from 中包含两个以上的表话,那么就会对上⼀个join连接产⽣结果的VT3和下⼀个表重复执⾏步骤1~3,⼀直到处理完所有表为⽌。
4. WHERE:对虚拟表VT3进⾏WHERE 条件过滤,只有符合 <where-condition>的记录才会被插⼊到虚拟表VT4中。
5. GROUP BY: 根据group by ⼦句中的列,对VT4的记录进⾏分组操作,产⽣ VT5.
distribution company6. CUBE| ROLLUP:对表VT5进⾏CUBE或者rollup操作,产⽣ VT6。
7. HAVING: 对虚拟表VT6 应⽤having过滤,只有符合<having-condition>的记录才会被插⼊到虚拟表VT7中。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论