MySQL的语句执行顺序
MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作。其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来说是透明的,但是只有最后一个虚拟的表才会被作为结果返回。如果没有在语句中指定某一个子句,那么将会跳过相应的步骤。
下面我们来具体分析一下查询处理的每一个阶段
- FORM: 对FROM的左边的表和右边的表计算笛卡尔积。产生虚表VT1
- ON: 对虚表VT1进行ON筛选,只有那些符合<join-condition>的行才会被记录在虚表VT2中。
- JOIN: 如果指定了OUTER JOIN(比如left join、 right join),那么保留表中未匹配的行就会作为外部行添加到虚拟表VT2中,产生虚拟表VT3, 如果 from子句中包含两个以上的表的话,那么就会对上一个join连接产生的结果VT3和下一个表重复执行步骤1~3这三个步骤,一直到处理完所有的表为止。
- WHERE: 对虚拟表VT3进行WHERE条件过滤。只有符合<where-condition>的记录才会被插入到虚拟表VT4中。
- GROUP BY: 根据group by子句中的列,对VT4中的记录进行分组操作,产生VT5.
- CUBE | ROLLUP: 对表VT5进行cube或者rollup操作,产生表VT6.
- HAVING: 对虚拟表VT6应用having过滤,只有符合<having-condition>的记录才会被 插入到虚拟表VT7中。
- SELECT: 执行select操作,选择指定的列,插入到虚拟表VT8中。
- DISTINCT: 对VT8中的记录进行去重。产生虚拟表VT9.
- ORDER BY: 将虚拟表VT9中的记录按照<order_by_list>进行排序操作,产生虚拟表VT10.
- LIMIT:取出指定行的记录,产生虚拟表VT11, 并将结果返回。
转自:http://www.cnblogs.com/rollenholt/p/3776923.html
相关推荐
MySQL 执行过程详解 MySQL 是一个流行的关系型数据库管理系统,本文将对 MySQL 执行过程进行详细的解释,并结合具体的实例来讲解 MySQL 存储过程。 什么是 MySQL 存储过程? MySQL 存储过程是一个预编译的 SQL ...
Mysql执行过程与BufferPool缓存机制.png
MySQL 执行过程与查询缓存是数据库操作中的关键环节,理解这一过程对于优化数据库性能至关重要。MySQL 的执行流程包括以下几个步骤: 1. **客户端发送查询**:当用户通过MySQL客户端发送一条SQL查询时,这个请求会...
存储过程是MySQL中的一个重要概念,它是一组预编译的SQL语句,可以在需要时执行。存储过程的好处包括提高性能、减少网络流量、增强安全性、简化复杂的操作和提供模块化的代码。在“MySQL5.0存储过程.pdf”中,你将学...
在"Debugger for MySQL"中,用户可以通过简单的操作在存储过程的任一语句前设置断点,当执行到该位置时,程序会暂停,提供给开发者分析当前状态的机会。 查看变量信息是另一个重要的调试步骤。在存储过程中,变量的...
存储过程是一种可以在数据库中存储和执行的程序单元,它可以实现复杂的业务逻辑和数据处理操作。 在 MySQL 5.0 中,存储过程的实现对 MySQL 数据库的发展具有里程碑的意义。 MySQL 数据库已经是现今具有统治地位的...
MySQL存储过程是一种预先定义并编译好的SQL语句集合,它存储在服务器上,并能在不同的应用程序中被调用执行。自MySQL 5.0版本起,引入了存储过程这一强大功能,这极大地丰富了MySQL的功能性和灵活性。存储过程不仅...
MySQL自5.0版本起引入了存储过程功能,这使得开发者能够利用存储过程来封装复杂的SQL语句或一系列SQL语句,从而提高应用程序的性能和安全性。 ### PHP与MySQL存储过程的交互 在PHP中调用MySQL存储过程,通常涉及到...
sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。 一、sql执行顺序 (1)from (2) on (3) join (4) where (5)group by(开始使用select中的别名,后面的语句中都可以使用) (6) avg,...
在这个场景中,"MySql视图顺序整理工具"是一个专为MySQL视图设计的应用程序,旨在帮助用户更有效地管理和组织Navicat中的视图SQL。 Navicat是一款流行的数据库管理工具,支持多种数据库系统,包括MySQL。在Navicat...
MySQL存储过程编程是数据库应用开发中的一个重要环节,它可以帮助开发者将一系列的数据库操作封装起来,以提高程序的可维护性和运行效率。在MySQL 5.0及以上版本中,存储过程、函数和触发器的支持为数据库提供了更...
下载完成后,双击运行该安装程序。 安装过程大致分为以下几个步骤: 1. **欢迎界面**:首先会显示一个欢迎界面,点击“下一步”继续。 2. **许可协议**:阅读并接受MySQL的许可协议,这是使用软件的前提。选择“我...
在IT领域,C API(应用程序接口)是一种编程接口,它允许程序员使用C语言与特定的系统或服务进行交互。在本例中,我们关注的是如何...同时,由于是用C语言编写,所以程序运行速度快,且可以方便地与其他C/C++代码集成。
MySQL采用客户端/服务器架构,其中客户端应用程序与服务器程序通信以执行数据库操作。客户端通过网络或本地接口向服务器发送SQL查询,服务器解析并执行查询,然后将结果返回给客户端。在日常使用中,我们通常通过...
这将将 MySQL 作为 Windows 的服务运行,并在 Windows 启动时自动启动服务。 十二、设置根帐号 root 的登录密码 在设置根帐号 root 的登录密码页面,输入密码并确认。这一步是是否要把 mysql 设置成 windows 的...
24.MySQL高级SQL技巧SQL执行顺序及正则表达式.avi 25.MySQL高级SQL技巧数字函数与字符串函数.avi └26.MySQL高级SQL技巧日期函数与聚合函数.mp4 ├第二天视频 01.MySQL高级今日内容.mp4 02.MySQL高级体系结构.avi 03...
### MySQL执行计划及索引最佳实践 #### 一、MySQL执行计划详解 MySQL执行计划是MySQL处理SQL查询的方式,它提供了关于SQL语句如何被优化和执行的信息。通过理解执行计划,可以有效地优化SQL查询,提高数据库性能。...
MySQL定时执行脚本,也称为计划任务或事件调度,是一种非常实用的功能,允许数据库系统按照预设的时间间隔自动执行特定的SQL语句或存储过程,无需依赖操作系统级别的计划任务服务。在MySQL中,这一功能主要通过`...