转载一篇不错的文章:http://ddlgyq.iteye.com/blog/1867867
sql语言中的查询的执行顺序,以前不是很了解,最近查阅了相关资料,在sql语言中,第一个被处理的字句总是from字句,最后执行的limit操作。现有以下的sql语句。
(8)SELECT (9)DISTINCT<select_list>
(1)FROM<left_table>
(3)<join_type>JOIN<right_table>
(2) ON<join_condition>
(5)GROUP BY<group_by_list>
(6)WITH{CUBE|ROLLUP}
(7)HAVING<having_condition>
(10)ORDER BY<order_by_list>
(11)LIMIT<limit_number>
以上的sql语句前的数字代表该sql语句的执行顺序,每一个操作都会产生一个虚拟表,这个虚拟表作为下个操作的输入,依次类推,最后生成的虚拟表作为结果输出。如果没有在查询中指定某一字句,则将跳过相应的步骤
1)FROM:对FROM子句中的左表<left_table>和右表<right_table>执行笛卡尔积,产生虚拟表VT1.
2)ON:对虚拟表VT1应用ON筛选,只有那些符合条件<join_condition>的行才会被插入虚拟表VT2中。
3)JOIN:如果是外连接,还要根据外连接的类型执行join操作,例如左外连接将左表中的行并且不在VT2中的行加入到VT2中,产生VT3.
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:对VT7执行select操作,将指定的数据插入到虚拟表VT8中
9)DISTINCT:去除重复数据,产生虚拟表VT9.
10)ORDER BY:按照<order_by_list>对VT9进行排序操作,产生虚拟表VT10
11).LIMIT:选出指定的行,产生虚拟表VT11,返回给用户。
ps:在应用where过滤器的时候,有两种过滤不被允许。
(1).由于此时数据还没有分组,所以还不能在where中使用where_condition=MIN(col)这类对统计的过滤
(2).由于此时还没有进行select操作,所以where中不能使用在select中定义的列的别名。
相关推荐
### SQL语句执行顺序说明 #### 一、SQL语句准备执行阶段 当SQL语句进入Oracle的库缓存后,为了确保其能够被正确执行,Oracle会经历一系列的检查和准备过程。这一阶段主要涉及以下几个步骤: 1. **语法检查**:...
Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序
了解 SQL 语句的执行顺序可以帮助开发人员更好地优化查询语句,提高数据库性能。 SQL 语句的执行顺序可以分为 11 个步骤: 1. FROM 子句:首先对 FROM 子句中的前两个表执行一个笛卡尔乘积,生成虚拟表 vt1。 2. ...
SQL查询语句的执行顺序是理解SQL工作原理的关键,它对于优化查询性能和编写有效查询至关重要。以下将详细解释每个步骤及其在实际查询中的应用。 首先,从标题和描述中我们可以得知,SQL查询语句的执行顺序是: 1. ...
#### SQL语句执行步骤 SQL查询的执行流程可以分为以下九个主要阶段: 1. **语法分析**:此阶段,数据库引擎检查SQL语句的语法正确性,确保其遵循SQL标准。如果语法错误,查询将在此阶段终止。 2. **语义分析**:...
### SQL Select 语句完整的执行顺序 在数据库查询语言(SQL)中,`SELECT`语句是最常用的查询数据的方式之一。正确理解`SELECT`语句的执行顺序对于编写高效、准确的查询至关重要。本文将详细介绍SQL Select语句的...
Sql查询语句的的执行顺序.xmind
通过对SQL语句的执行计划进行分析,我们可以找到优化查询性能的策略,从而提高数据库系统的整体性能。这篇博客"通过分析SQL语句的执行计划优化SQL(总结)"深入探讨了这一主题,下面将对其中的主要知识点进行详细阐述...
以上查询可以帮助我们识别出那些执行成本高、磁盘读取频繁或处理大量行的SQL语句,从而进行进一步的优化工作。 通过上述方法,我们可以有效地监控和分析Oracle数据库中的SQL执行情况,这对于提高系统的整体性能具有...
### SQL语句中SELECT语句的执行顺序 在SQL语言中,`SELECT`语句是进行数据查询的核心工具。为了确保查询结果的准确性和效率,理解`SELECT`语句内部的执行顺序至关重要。本文将详细解析`SELECT`语句各子句的执行...
了解T-SQL语句的执行顺序对于优化查询性能和编写更高效的代码至关重要。以下是对标题和描述中所述知识点的详细说明: 1. **SELECT**: SELECT语句用于从一个或多个表中选取数据。在T-SQL中,这是执行的第一步,它...
7. **存储过程**:预编译的SQL语句集合,可以接受参数,执行多次,提高性能,并提供封装和安全性的优点。 8. **触发器**:当满足特定条件时自动执行的SQL代码,常用于实现复杂的业务规则或审计功能。 9. **视图**...
Probed Table是在连接操作中被驱动表查询的数据表,这两者的确定会影响查询的执行顺序和性能。 在优化SQL时,使用绑定变量是提高共享SQL利用率的有效手段。绑定变量允许SQL语句中的某些值被动态替换,而不改变语句...
ORACLE-Select语句执行顺序及如何提高Oracle基本查询效率 在Oracle中,SQL语句的执行顺序是非常重要的。了解了SQL语句的执行顺序,我们可以更好地优化SQL语句,提高查询效率。下面我们将详细介绍ORACLE-Select语句...
### SQL查询的逻辑执行顺序详解 #### 一、引言 SQL(Structured Query Language)作为数据库操作的标准语言,在数据检索、管理和分析方面扮演着至关重要的角色。为了更高效地理解和优化SQL查询,了解其背后的执行...
SQL语句的执行顺序对于理解和优化查询性能至关重要。本篇文章将详细解释SQL语句,特别是SELECT语句的执行流程。 首先,我们需要理解SQL语句的基本结构,通常包括以下几个部分:SELECT、FROM、WHERE、GROUP BY、...
本文将深入探讨MySQL数据库系统中的SQL语句执行过程,包括MySQL的架构总览、查询执行流程以及SQL语句的解析顺序。 首先,我们来看MySQL的架构总览。MySQL架构分为两个主要层次:SQL Layer(SQL层)和Storage Engine...
### SELECT语句执行顺序 在ANSI SQL标准中,SELECT语句是数据库查询语言的核心组成部分,用于从一个或多个表中检索数据。了解SELECT语句的执行顺序对于编写高效、正确的SQL查询至关重要。本文将详细介绍SELECT语句...
数据库查询语句执行顺序与编写顺序详解 数据库查询语句的执行顺序和编写顺序是数据库开发中非常重要的知识点。特别是在WHERE、GROUP BY、HAVING、ORDER BY同时出现时,执行顺序和编写顺序变得尤为重要。本文将详细...