mysql执行顺序(转载)

转载 2018年04月15日 02:41:16

MySQL的语句执行顺序

MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作。其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来说是透明的,但是只有最后一个虚拟的表才会被作为结果返回。如果没有在语句中指定某一个子句,那么将会跳过相应的步骤。

下面我们来具体分析一下查询处理的每一个阶段

  1. FORM: 对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.
  6. CUBE | ROLLUP: 对表VT5进行cube或者rollup操作,产生表VT6.
  7. HAVING: 对虚拟表VT6应用having过滤,只有符合<having-condition>的记录才会被 插入到虚拟表VT7中。
  8. SELECT: 执行select操作,选择指定的列,插入到虚拟表VT8中。
  9. DISTINCT: 对VT8中的记录进行去重。产生虚拟表VT9.
  10. ORDER BY: 将虚拟表VT9中的记录按照<order_by_list>进行排序操作,产生虚拟表VT10.

  1. LIMIT:取出指定行的记录,产生虚拟表VT11, 并将结果返回。

转自https://www.cnblogs.com/rollenholt/p/3776923.html

VC++多线程下内存操作的优化

作者/李红亚 许多程序员发现用VC++编写的程序在多处理器的电脑上运行会变得很慢,这种情况多是由于多个线程争用同一个资源引起的。对于用VC++编写的程序,问题出在VC++的内存管理的具体实现上。以下通...
  • zdg
  • zdg
  • 2000-12-12 13:51:00
  • 5978

关于sql和MySQL的语句执行顺序(必看!!!)

今天遇到一个问题就是mysql中insert into 和update以及delete语句中能使用as别名吗?目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及My...
  • u014044812
  • u014044812
  • 2016-03-29 12:15:09
  • 33690

Mysql----SQL查询语句执行顺序

SQL查询语句执行顺序
  • alwayssmile21
  • alwayssmile21
  • 2016-08-22 16:17:17
  • 1871

Mysql 语句执行顺序

纸上得来终觉浅 1.这样一个问题,作为一个开发人员需要掌握数据库的哪些东西?  在开发中涉及到数据库,基本上只用到了sql语句,如何写sql以及对其进行优化就比较重要,那些mysql的厚本书籍针对的是...
  • Jintao_Ma
  • Jintao_Ma
  • 2016-04-26 21:51:48
  • 12775

mysql查询条件的执行顺序

有这样的一个问题mysql查询使用mysql中left(right)join筛选条件在on与where查询出的数据是否有差异。    可能只看着两个关键字看不出任何的问题。那我们使用实际...
  • wxc20062006
  • wxc20062006
  • 2016-07-13 16:56:41
  • 3665

MySQL SELECT执行顺序

mysql select 执行顺序, select语句执行顺序, select 执行顺序, sql select执行顺序, mysql语句执行顺序 1、FORM: 对FROM左边的表和右边的表计算笛卡...
  • freefish_yzx
  • freefish_yzx
  • 2017-08-16 15:36:01
  • 253

mysql sql语句执行顺序

mysql sql语句执行顺序 引言:作为一个程序猿。要想优化sql,首先要明白sql语句的执行顺序、同时防止该死的面试官问一些数据库专业的问题有必要知道这些 sql语句select语句查询顺序 ...
  • u010833154
  • u010833154
  • 2016-02-19 14:33:11
  • 2666

mysql sql执行顺序

mysql> explain select * from (select * from ( select * from test where id=1) a) b; +----+----------...
  • zhaoyangjian724
  • zhaoyangjian724
  • 2016-06-05 15:43:18
  • 262

MySql执行顺序

标准的 SQL 的解析顺序为:(1).FROM 子句, 组装来自不同数据源的数据(2).WHERE 子句, 基于指定的条件对记录进行筛选(3).GROUP BY 子句, 将数据划分为多个分组(4).使...
  • sun488939
  • sun488939
  • 2010-06-10 10:15:00
  • 2098

MYSQL学习心得(4) --SQL语句执行顺序

1.查询中用到的关键词主要包含六个,并且他们的顺序依次为  select--from--where--group by--having--order by    其中select和from是必须...
  • helongzhong
  • helongzhong
  • 2016-11-30 10:45:48
  • 1226
收藏助手
不良信息举报
您举报文章:mysql执行顺序(转载)
举报原因:
原因补充:

(最多只允许输入30个字)