oracle 各部分执行顺序

查询语句的执行顺序:

1、FROM 子句:执行顺序为从后往前、从右到左。数据量较少的表尽量放在后面。

2、WHERE子句:执行顺序为自下而上、从右到左。将能过滤掉最大数量记录的条件写在WHERE 子句的最右。

3、GROUP BY:执行顺序从左往右分组,最好在GROUP BY前使用WHERE将不需要的记录在GROUP BY之前过滤掉。

4、HAVING 子句:消耗资源。尽量避免使用,HAVING 会在检索出所有记录之后才对结果集进行过滤,需要排序等操作。

5、SELECT子句:少用*号,尽量取字段名称。ORACLE 在解析的过程中, 通过查询数据字典将*号依次转换成所有的列名, 消耗时间。

6、ORDER BY子句:执行顺序为从左到右排序,消耗资源。

case

when 条件 then 结果

end

原文地址:https://www.cnblogs.com/zhouyunchao/p/10888559.html

时间: 2024-10-29 04:10:20

oracle 各部分执行顺序的相关文章

oracle查询语句执行顺序

完整的查询语句类似是这样的: select ..., ROWNUM from table where <where clause> group by <columns> having <having clause> order by <columns>; 它的处理顺序是: 首先,执行 FROM/WHERE 语句 为结果赋予 ROWNUM 并同时根据 FROM/WHERE 语句进行 rownum 过滤 执行 SELECT 执行 GROUP BY 执行 HAVI

ORACLE FormBuilder触发器执行顺序

1.当打开FORM时: (1)PRE-FORM (2)PRE-BLOCK(BLOCK级) (3)WHEN-NEW-FORM-INSTANCE (4)WHEN-NEW-BLOCK-INSTANCE (5)WHEN-NEW-RECORD-INSTANCE (6)WHEN-NEW-ITEM-INSTANCE 2.当填写一行记录完成后,光标移动到下一条记录的时候: (1)WHEN-VALIDATE-RECORD (只将填写的记录与数据库中已存在的记录作唯一性的验证,如果只是页面上的数据重复而数据库中没有

Oracle中查询关键字select--from--where--group by--having--order by执行顺序

select--from--where--group by--having--order by 这6个查询关键字的执行顺序: 1.from组装来自不同数据源的数据:2.where基于指定的条件对记录行进行筛选:3.group by子句将数据划分为多个分组:4.使用聚集函数进行计算:5.使用having子句筛选分组:6.计算所有的表达式:7.select 集合输出:8.使用order by对结果集进行排序. 以下例子基于Oracle自带表空间hr 例子1:having和select的执行说明 情景

Oracle一个事务中的Insert和Update执行顺序

今天碰到了一个奇怪的问题,是关于Oracle一个事务中的Insert和Update语句的执行顺序的问题. 首先详细说明下整个过程: 有三张表:A,B,C,Java代码中有一段代码是先在表A中插入一条数据,然后再更新表B的两个字段,更新的两个字段是特定值.并且插入和更新在一个事务中. 有个需求需要在表A添加一个Insert的行级触发器,在触发器里,插入表A一行记录后去表B查看更新的两个字段是否满足特定条件, 如果表B的两个字段同时等于特定值,则把表A和表B的数据整合下放到表C.触发器的初衷就是这样

Oracle中Select语句完整的执行顺序

oracle Select语句完整的执行顺序: 1.from 子句组装来自不同数据源的数据: 2.where 子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函数进行计算: 5.使用having子句筛选分组: 6.计算所有的表达式: 7.使用order by对结果集进行排序.

Oracle中的一些查询语句及其执行顺序

查询条件: 1)LIKE:模糊查询,需要借助两个通配符,%:表示0到多个字符:_:标识单个字符. 2)IN(list):用来取出符合列表范围中的数据. 3)NOT IN(list): 取出不符合此列表中的数据记录. 4)BETWEEN-AND-:用来查询符合某个值域范围条件的数据,最常见的是使用在数字类型的数据范围上,但对字符类型和日期类型数据也同样适用.for example:    SELECT ename, sal FROM emp WHERE sal BETWEEN 1500 AND 3

Oracle 执行顺序 及 驱动表和被驱动表

oracle驱动表以及如何确定驱动表 驱动表普遍认为是由SQL语句的写法决定的,简单的说,就是FROM语句后面的表列表中的最后一个.由于SQL语句是从后向前进行分析,Oracle会根据FROM语句从后到前将各个表依次连接起来. 首先理解执行顺序 先从最开头一直往右看,直到看到最右边的并列的地方,对于不并列的,靠右的先执行:对于并列的,靠上的先执行.  即并列的缩进,从上往下执行,非并列的缩进块,从下往上执行. 1.    如果所连接的表A和B,A表长度远远大于B表,建议从较大的A表上驱动.(简言

Oracle EBS中有关Form的触发器的执行顺序

http://blog.csdn.net/postfxj/article/details/8135769 触发器执行顺序: 1.  当打开FORM时: (1)       PRE-FORM (2)       PRE-BLOCK(BLOCK级) (3)       WHEN-NEW-FORM-INSTANCE (4)       WHEN-NEW-BLOCK-INSTANCE (5)       WHEN-NEW-RECORD-INSTANCE (6)       WHEN-NEW-ITEM-I

Oracle学习之SQL语句执行顺序

1.执行顺序: 客户端输入sql语句 sql语句通过网络到达数据库实例 server porcess接收SQL语句后 a.将sql语句解析成执行计划,然后才能执行 b.解析:消耗很多资源:CPU.IO,如在共享池中有缓存则不需要再次解析. (共享池:缓存SQL语句以及SQL语句对应的执行计划) (buffer case:缓存dbf的数据 取数据过程:server porcess先检查buffer case中是否有数据,如果有数据则直接将 buffer catch中的数据返给用户(逻辑读):如果没