`
q12344566789
  • 浏览: 31864 次
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

oracle 之 语句执行顺序

 
阅读更多

转自http://wang286480403.iteye.com/blog/1899915

转自http://wang286480403.iteye.com/blog/1899915

转自http://wang286480403.iteye.com/blog/1899915

重要的事情说三遍。



SQL Select语句完整的执行顺序:

1、from子句组装来自不同数据源的数据;

2、where子句基于指定的条件对记录行进行筛选;

3、group by子句将数据划分为多个分组;

4、使用聚集函数进行计算;

5、使用having子句筛选分组;

6、计算所有的表达式;

7、select 的字段;

8、使用order by对结果集进行排序。

SQL语言不同于其他编程语言的最明显特征是处理代码的顺序。在大多数据库语言中,代码按编码顺序被处理。但在SQL语句中,第一个被处理的子句式FROM,而不是第一出现的SELECT。SQL查询处理的步骤序号:

1 (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语句进入Oracle的库缓存后,为了确保其能够被正确执行,Oracle会经历一系列的检查和准备过程。这一阶段主要涉及以下几个步骤: 1. **语法检查**:...

    ORACLE-Select语句执行顺序及如何提高Oracle基本查询效率.pdf

    ORACLE-Select语句执行顺序及如何提高Oracle基本查询效率 在Oracle中,SQL语句的执行顺序是非常重要的。了解了SQL语句的执行顺序,我们可以更好地优化SQL语句,提高查询效率。下面我们将详细介绍ORACLE-Select语句...

    oracle触发器执行顺序.pdf

    总结以上知识点,Oracle触发器的执行顺序和功能主要围绕着行级触发器和语句级触发器的概念展开,它们根据触发器定义的BEFORE或AFTER,以及DML操作发生前后的不同阶段执行。触发器可以包含复杂的逻辑判断,并在满足...

    ORACLE 优化sql语句提高oracle执行效率 .doc

    ORACLE 优化 SQL 语句提高 Oracle 执行效率 Oracle 是一个功能强大的关系数据库管理系统,然而,如果不正确地使用 SQL 语句,可能会导致执行效率低下。为了提高 Oracle 的执行效率,需要遵循一些最佳实践。下面是...

    oracle 查看当前会话执行的sql语句

    ### Oracle 查看当前会话执行的SQL语句 在Oracle数据库管理中,有时我们需要了解某个特定会话(Session)正在执行哪些SQL语句。这在性能调优、问题诊断等场景下尤为重要。以下将详细介绍如何通过不同的方法来查看...

    Oracle SQL语句执行计划的探讨.pdf

    Oracle SQL语句执行计划是数据库管理系统中非常关键的一部分,它决定了SQL查询如何在数据库中执行,从而直接影响到查询效率和整体系统性能。Oracle数据库通过共享池来存储已解析的SQL语句及其执行计划,以此避免对...

    oracle sql 语句暗示 hints

    为了提升SQL语句的执行效率,Oracle 提供了一系列称为“暗示”(Hints)的功能。本文将深入探讨 Oracle SQL 语句暗示的相关知识点,帮助开发人员更好地理解和运用这些强大工具。 #### 二、Oracle SQL 暗示概述 **...

    oracle查询语句优化

    通过以上分析可以看出,Oracle查询语句的优化不仅涉及到SQL语句本身的设计,还涉及到数据库的整体架构、索引的选择以及SQL执行计划的管理等多个方面。合理地运用这些优化技巧,可以在很大程度上提升系统的整体性能。

    oracle 执行计划 详解

    "Oracle 执行计划详解" Oracle 执行计划是数据库性能优化的关键。为了更好地理解和优化 Oracle 数据库的执行计划,我们需要了解执行计划的生成过程、优化方法和执行计划的解读方法。 执行计划生成过程 执行计划的...

    Oracle SQL语句跟踪

    2. 执行计划:显示了Oracle如何执行SQL语句,包括操作符、执行顺序、成本估算等。 3. 性能统计:如执行时间、CPU时间、I/O次数等。 4. 等待事件:揭示了SQL语句在等待什么资源,这有助于识别性能瓶颈。 5. PL/SQL...

    Oracle DML触发器的执行顺序.pdf

    Oracle DML 触发器的执行顺序 Oracle 中的 DML 触发器是一种存储在数据库中的 PL/SQL 块,能够自动响应特定事件,以实现一些复杂的业务规则。DML 触发器可以分为三种基本类型:数据操纵语句 (DML) 触发器、数据定义...

    oracle高效语句编写知识.doc

    在Oracle数据库中,优化器的选择对于SQL语句的执行效率至关重要。Oracle提供了三种主要的优化器类型:基于规则(RULE)、基于成本(COST)以及选择性(CHOOSE)。这三种优化器的选择与配置直接影响到SQL执行计划的...

    ORACLE_SQL语句

    SQL是一种用于访问和管理关系数据库的标准化语言,而SQL\*Plus则是Oracle提供的一款交互式工具,用于执行SQL语句、PL/SQL块以及管理数据库对象。虽然它们都能执行SQL语句,但SQL\*Plus提供了更多的命令和功能,如...

    oracle sql执行过程(流程图)

    Oracle sql执行流程图_SQL执行过程一、sql语句的执行步骤:1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义。2) 语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限。3)...

    Oracle语句优化53个规则详解

    ### Oracle语句优化53个规则详解 #### 一、选用适合的Oracle优化器 在Oracle数据库中,优化器的选择对于SQL语句的执行效率至关重要。Oracle提供了三种优化器模式: 1. **基于规则的优化器(RULE)**:这是一种较...

    超酷30个Oracle语句优化规则详解

    ### 超酷30个Oracle语句优化规则详解 #### 一、选用适合的Oracle优化器 在Oracle数据库中,优化器的选择对于查询性能至关重要。Oracle提供了三种优化器模式来帮助用户根据实际情况选择最合适的执行计划: 1. **...

    linux下批量执行oracle脚本的shell脚本

    在shell脚本中,这些步骤可以通过调用相应的Oracle管理工具(如`sqlplus`或`dbca`)来实现,并通过逻辑控制结构(如if、for循环)确保按顺序执行。 `createTable.sql` 文件很可能是包含创建数据库表结构的SQL脚本。...

    oracle语句优化.docx

    Oracle 语句优化的方法和技巧,涵盖多表关联、EXISTS 和 IN 语句的使用、INDEX_JOIN 优化、WHERE 和 HAVING 语句的区别、NOT IN 和 &lt;&gt; 操作符的使用、LIKE 操作符的替代、UNION 操作符的优化、SQL 书写的影响、WHERE...

    oracle select执行顺序的详解

    SQL Select语句完整的执行顺序:1、from子句组装来自不同数据源的数据;2、where子句基于指定的条件对记录行进行筛选;3、group by子句将数据划分为多个分组;4、使用聚集函数进行计算;5、使用having子句筛选分组;...

Global site tag (gtag.js) - Google Analytics