http://daociyiyou111.blog.163.com/blog/static/1647015122011912101939547/
SQL语言不同于其他编程语言的最明显特征是处理代码的顺序。在大多数据库语言中,代码按编码顺序被处理。但在SQL语句中,第一个被处理的子句式FROM,而不是第一出现的SELECT。SQL查询处理的步骤序号:
(8)SELECT(9) DISTINCT (11) <TOP_specification> <select_list>
2(1)FROM <left_table>
3(3) <join_type> JOIN <right_table>
4(2) ON <join_condition>
5(4) WHERE <where_condition>
6(5) GROUP BY <group_by_list>
7(6) WITH {CUBE | ROLLUP}
8(7) HAVING <having_condition>
9 (10) ORDER BY <order_by_list>
以上每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只有最后一步生成的表才会会给调用者。如果没有在查询中指定某一个子句,将跳过相应的步骤。
逻辑查询处理阶段简介:
1、FROM:对FROM子句中的前两个表执行笛卡尔积(交叉联接),生成虚拟表VT1。
2、ON:对VT1应用ON筛选器,只有那些使为真才被插入到TV2。
3、OUTER
(JOIN):如果指定了OUTER JOIN(相对于CROSS JOIN或INNER
JOIN),保留表中未找到匹配的行将作为外部行添加到VT2,生成TV3。如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表位置。
4、WHERE:对TV3应用WHERE筛选器,只有使为true的行才插入TV4。
5、GROUP
BY:按GROUP BY子句中的列列表对TV4中的行进行分组,生成TV5。
6、CUTE|ROLLUP:把超组插入VT5,生成VT6。
7、HAVING:对VT6应用HAVING筛选器,只有使为true的组插入到VT7。
8、SELECT:处理SELECT列表,产生VT8。
9、DISTINCT:将重复的行从VT8中删除,产品VT9。
10、ORDER
BY:将VT9中的行按ORDER BY子句中的列列表顺序,生成一个游标(VC10)。
11、TOP:从VC10的开始处选择指定数量或比例的行,生成表TV11,并返回给调用者。
分享到:
相关推荐
Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序
关于SQL语句在进入oracle库缓存之后的执行顺序的简析~!
SQL语句的执行原理及顺序,好好学习吧!哈哈!
T-SQL语句执行的顺序
SQL语句中SELECT语句的执行顺序; 详细的讲述了SQL的SELECT语句的各个子句一起使用时的执行优先级问题;
本文将详细介绍数据库总结--SQL语句执行顺序,需要了解更多的朋友可以参考下
SQL Select2008语句完整的执行顺序
本文给大家介绍SQL语句执行顺序详解,涉及到sql语句执行顺序相关知识,对sql语句执行顺序感兴趣的朋友一起看看吧
本文将从MySQL总体架构—>查询执行流程—>语句执行顺序来探讨一下其中的知识。 一、MySQL架构总览: 架构最好看图,再配上必要的说明文字。 下图根据参考书籍中一图为原本,再在其上添加上了自己的理解。 从...
ansi sql中SELECT语句的执行顺序,很有用的哦
本文就sql和mysql的语句执行顺序问题向大家作了详细介绍,小编觉得挺不错的,这里分享下,供大家参考。
SQL 语句的执行顺序跟其语句的语法顺序并不一致 一般而言 SQL 语句的语法顺序是: SELECT[DISTINCT] FROM WHERE GROUP BY HAVING UNION ORDER BY 其执行顺序为: FROM WHERE GROUP BY HAVING SELECT DISTINCT UNION...
1 :普通SQL语句可以用Exec执行 例: Select * from tableName Exec('select * from tableName') Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类...
Join过程的各个步骤经常是...row source(表)之间的连接顺序对于查询的效率有非常大的影响。通过首先存取特定的表,即将该表作为驱动表,这样可以先应用某些限制条件,从而得到一个较小的row source,使连接的效率较高。
执行计划的每一步返回一组行,它们或者为下一步所使用,或者在最后一步时返回给发出SQL语句的用户或应用。由每一步返回的一组行叫做行源(row source)。图5-1树状图显示了从一步到另一步行数据的流动情况。每步的...
Sql查询语句的的执行顺序.xmind
关于Oracle,我们都已经学习了SQL语句,那么Oracle其实已经学习了一大半,接下来自己学习Oracle主要是看一下他的概念,Oracle和SQL Server还是有很大不同的,熟悉他的表空间这些概念,了解他的图形界面,和备份...