`
guoyanxi
  • 浏览: 275747 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

oracle sql解析顺序

阅读更多
今天被问到了一个where rownum与order by的顺序问题
实践了一下,没有太大问题
但是对于一个过了007的人来说是很不应该的
附上sql解析顺序:
引用

标准的SQL语句,其select各子句解析顺序如下:

第一为from子句:因为最先确定的就是范围,即该对哪个表或者视图进行操作。

第二是where子句:它的作用是将从from语句中返回的结果进行检查,不满足where语句所设的限定条件者将消除。



select * from student

where sno not like '120'

这里面sno为学号的意思,这个语句的意思是说查询student表中的所有学生(除了学号是120)的信息。首先执行from语句,将student表中的所有信息列出来,然后执行where语句,去掉学号是120的学生信息。

第三是group by语句:如果声明了group by语句,返回的结果就会以组为单位显示。

这里要注意group by的使用:如果没有出现在group by后面的列,它是不可能出现在select语句后面的。因为group by的作用是分组,没有出现在group by后面的列是不按其分组的,而同时他又出现在select语句后面,就是说要先按别的列进行分组之后,再显示这个列,而这是不可能实现的。

如果声明了group by语句,那么select语句之后只能有group by后面的列,以及聚集函数。

第四是聚集函数

第五是Having语句:其作用是在用group by分组之后,将不满足条件的组消除掉。它和where的区别就是它作用于组,而where只作用于单个的元组(也就是行)。

第六:计算所有表达式

第七:order by排序语句。
分享到:
评论

相关推荐

    sql解析顺序

    SQL 解析顺序 SQL 语句的解析顺序是一个复杂的过程,它涉及到多个步骤和子句的执行顺序。在这篇文章中,我们将详细地讲述 SQL 语句的解析顺序,包括 FROM、WHERE、GROUP BY、HAVING、SELECT 等子句的执行顺序。 ...

    ORACLE SQL性能优化系列

    为了不重复解析相同的 SQL 语句,在第一次解析之后,ORACLE 将 SQL 语句存放在内存中。这块位于系统全局区域 SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享。因此,...

    oracle sql_tuning

    1. **SQL执行计划**:SQL执行计划是Oracle解析器为每个SQL语句制定的执行策略,包括表的扫描方式(全表扫描或索引扫描)、连接顺序、排序操作等。理解执行计划有助于找出性能瓶颈并进行优化。 2. **绑定变量**:...

    oracle SQL优化技巧

    在基于规则的优化器中,Oracle 的解析器按照从右到左的顺序处理 FROM 子句中的表名。因此,在 FROM 子句中写在最后的表(基础表)将被最先处理。在 FROM 子句中包含多个表的情况下,需要选择记录条数最少的表作为...

    Oracle Sql 性能优化

    ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表...

    ORACLE数据库中SQL优化解析.pdf

    查询语句转换阶段会将解析后的SQL语句转换成更合理的执行形式。执行计划估计则是基于数据字典中的统计信息来计算执行计划的成本。计划生成阶段基于不同的访问路径、连接方式和连接顺序组合产生不同的执行计划,并...

    oracle sql优化

    绑定变量可以减少SQL解析次数,提高执行效率。避免在SQL语句中直接使用常量,而应使用参数化查询,以减少硬解析,提升系统性能。 六、避免全表扫描 尽量让Oracle使用索引来访问数据,而不是进行全表扫描。优化索引...

    oracle sql调优原则

    - **选择最优表名顺序**:Oracle的解析器按从右至左的顺序处理`FROM`子句中的表名。选择记录最少的表作为基础表可以提高查询效率。 - **WHERE子句的优化**:表之间的连接尽量使用主键、外键、唯一索引或索引。在`...

    oracle SQL优化实例

    Oracle在执行SQL时,会按照WHERE子句中的条件顺序来解析和执行。 **示例代码:** ```sql -- 耗时较长 SELECT a.empno, b.dname FROM emp a, dept b WHERE a.ename AND a.deptno = b.deptno; -- 耗时较短 SELECT a...

    Oracle SQL Tuning.pdf

    在Oracle环境中,SQL语句的处理流程主要包括解析、优化和执行三个阶段。解析阶段,Oracle会检查SQL语句的语法和逻辑是否正确;优化阶段,Oracle的查询优化器会分析SQL语句,选择最有效的执行计划;最后是执行阶段,...

    ORACLESQL性能优化全PPT教案.pptx

    2. **执行计划分析**:通过EXPLAIN PLAN或V$SQL_PLAN视图,我们可以查看SQL语句的执行计划,了解数据库如何处理查询,包括表扫描方式(全表扫描或索引扫描)、连接顺序、排序操作等,这有助于找出性能瓶颈。...

    Oracle+SQL性能优化40条.docx

    * Oracle 在解析 SQL 语句的时候,对于“*”将通过查询数据库字典来将其转换成对应的列名 * 建议列出所有的 Column 名称,而不是简单的用“*”来替代 八、减少访问数据库的次数 * 执行每条 SQL 语句时,Oracle 在...

    Oracle SQL语句跟踪

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

    Oracle SQL性能优化技巧总结

    Oracle的解析器会按照从右至左的顺序处理FROM子句中的表名,因此,位于FROM子句最右侧的表(即基础表)将被首先处理。 - **基础知识**:当涉及到多表连接时,应该选择记录数较少的表作为基础表,以减少处理的数据量...

    Oracle_SQL优化脚本_完整实用资源

    Oracle SQL优化是数据库管理员和开发人员提升系统性能的关键技能之一。这个"Oracle_SQL优化脚本_完整实用资源"压缩包包含了一系列工具和方法,旨在帮助你优化在Oracle数据库上运行的SQL查询,从而提高数据库的响应...

    Oracle SQL优化法则

    Oracle通过共享池存储已解析的SQL语句,以供多次执行时复用,减少解析时间,提升性能。但共享的前提是SQL语句必须严格匹配,包括空格、换行等字符。此外,对象访问方式的匹配也至关重要。 除了上述基础规则,还有...

    ORACLE SQL性能优化规范

    通过SQL语句池(SQL Sharing)共享相同的查询结构,可以减少解析和编译的时间,提高系统性能。 10. 选择最有效率的表名顺序(只在基于规则的优化器中有效): 在RBO中,表的连接顺序会影响执行计划。根据表的大小和...

    Oracle提高SQL查询效率(SQL优化).doc

    本文将详细介绍 Oracle 中提高 SQL 查询效率的技巧和策略,包括选择最有效率的表名顺序、WHERE 子句中的连接顺序、SELECT 子句中避免使用‘*’、减少访问数据库的次数、使用 DECODE 函数、整合简单的数据库访问、...

    ORACLE SQL性能优化

    综上所述,通过合理选择优化器、共享SQL语句、调整表顺序和WHERE子句条件、明确指定查询列以及减少数据库访问次数等方法,可以有效地提升Oracle SQL查询的性能。这些技巧不仅适用于日常开发工作中,也是DBA进行系统...

Global site tag (gtag.js) - Google Analytics