`
三问飞絮
  • 浏览: 320632 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Oracle优化记录之一(Where条件顺序)

 
阅读更多

Where子句的条件的顺序

由于Oracle解析Where查询条件是自左向左,自下而上进行的。所以,可以过滤越多记录的条件越应该往后面移动。最大限制的Where子句放在句末。

--摘录
-- (低效,执行时间156.3秒)
SELECT … 
FROM EMP E
WHERE  SAL > 50000
AND    JOB = ‘MANAGER’
AND    25 < (SELECT COUNT(*) FROM EMP
             WHERE MGR=E.EMPNO);

-- (高效,执行时间10.6秒)

SELECT … 
FROM EMP E
WHERE 25 < (SELECT COUNT(*) FROM EMP
             WHERE MGR=E.EMPNO)
AND    SAL > 50000
AND    JOB = ‘MANAGER’; 
 
分享到:
评论

相关推荐

    oracle语句优化方法.txt

    1) 选择最有效率的表名顺序(只在基于规则的优化器中有效)...ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.

    oracle SQL优化技巧

    Oracle SQL 优化是提高数据库性能的关键技巧之一。以下是 Oracle SQL 优化的 12 个技巧: 1. 选择最有效率的表名顺序 在基于规则的优化器中,Oracle 的解析器按照从右到左的顺序处理 FROM 子句中的表名。因此,在 ...

    Oracle 性能优化之 SQL优化

    - Oracle采用自下而上的顺序解析WHERE子句,因此表之间的连接条件应当位于WHERE子句的前面,而过滤条件则应放在后面。这样可以最大限度地减少不必要的数据处理。 3. **SELECT子句中避免使用“*”** - 使用星号...

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

    因此,表之间的连接必须写在其他 WHERE 条件之前,那些可以过滤掉最大数量记录的条件必须写在 WHERE 子句的末尾。 3. SELECT 子句中避免使用‘*’:Oracle 在解析的过程中,会将‘*’依次转换成所有的列名,这个...

    oracle优化建议34条

    ### Oracle优化建议34条详解 #### 1. 选择合适的驱动表(只在有物化视图的情况下) 在Oracle数据库查询中,选择正确的驱动表是优化查询性能的关键之一。通常,驱动表(driving table)应是那些具有较小基数(即不同...

    oracle语句优化.docx

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

    Oracle Sql 性能优化

    ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 3、SELECT中避免使用 ‘ * ‘: ORACLE在解析的过程中, ...

    Oracle SQL性能优化技巧总结

    为了提高性能,应确保表之间的连接条件写在其他WHERE条件之前,并且那些可以过滤掉最大数量记录的条件应该放在WHERE子句的末尾。 - **基础知识**:在WHERE子句中,表之间的连接条件应当优先处理,而过滤条件则应...

    Oracle性能优化技巧

    2. **WHERE子句的连接顺序**:Oracle自下而上解析WHERE条件,所以应将能过滤最多记录的条件放在最后,以尽早减少数据集。 3. **避免使用通配符'*'**:在SELECT语句中使用'*'会导致Oracle解析所有列,增加了处理时间...

    oracle优化-SQL优化

    2. RBO主要根据Oracle内部预定的一些规则来优化SQL语句,比如当where子句中的一列有索引时,优化器会选择走索引。 3. CBO考虑的是语句的代价,即CPU和内存的消耗。优化器会根据表和索引的统计信息来判断是否采用CBO...

    Oracle优化策略

    #### 一、选用适合的Oracle优化器 在Oracle数据库中,优化器的选择对于查询性能有着至关重要的影响。Oracle提供了三种优化器:基于规则的优化器(Rule-based Optimizer, RBO)、基于成本的优化器(Cost-based ...

    Oracle语句优化53个规则详解

    11. 选择合适的连接顺序:在多表联接查询中,优化器的连接顺序可能影响性能,有时手动指定连接顺序(使用FROM子句的JOIN顺序)会更优。 12. 使用EXPLAIN PLAN分析查询:这有助于理解Oracle如何执行查询,从而找出...

    oracle性能优化技巧

    #### 一、Oracle优化器模式 在Oracle数据库中,优化器是决定查询执行计划的关键组件,其目标是最小化资源消耗并最大化查询性能。Oracle提供了三种主要的优化器模式:基于规则(RULE)、基于成本(COST)以及选择性...

    oracle+plsql性能优化

    4. ORACLE优化器和SQL语句的执行:理解ORACLE优化器的工作原理,能够更好地理解SQL语句的执行计划。这涉及到索引的创建、使用,以及在不同类型的查询中如何选择最合适的索引。 5. PL/SQL技巧:PL/SQL在Oracle数据库...

    ORACLE19c数据库性能优化说明.docx

    全表扫描是对表中的每条记录进行顺序访问,Oracle通过批量读取数据块来优化这一过程。ROWID包含了记录的物理位置信息,索引使得快速访问ROWID成为可能,从而加速基于索引列的查询。 利用索引来提高效率,有几种策略...

    oracle数据库优化大全(面试和学习都适用)

    ORACLE 采用自下而上的顺序解析 WHERE 子句,根据这个原理,表之间的连接必须写在其他 WHERE 条件之前,那些可以过滤掉最大数量记录的条件必须写在 WHERE 子句的末尾。 3. SELECT 子句中避免使用 ‘*’ ORACLE 在...

    oracle查询优化

    Oracle SQL 查询优化是提高数据库性能的关键技术之一,尤其在处理大量数据时,优化查询能够显著提升系统的响应速度和资源利用效率。以下是一些关键的优化策略: 1. **选择最有效的表名顺序**:在FROM子句中,Oracle...

    30个Oracle语句优化规则详解

    #### 一、选用适合的Oracle优化器 Oracle数据库提供了三种主要的优化器:基于规则的优化器(RULE)、基于成本的优化器(COST)和选择性优化器(CHOOSE)。优化器的选择直接影响到SQL查询的执行计划,从而影响查询的...

    ORACLE性能优化31条

    Oracle数据库的性能优化是数据库管理员和开发人员关注的重点,因为它直接影响到系统的响应时间和资源利用率。以下是对"ORACLE性能优化31条"中关键知识点的详细说明: 1. **优化器选择**: - Oracle提供了三种优化...

    Oracle+SQL性能优化40条.docx

    * Oracle 采用自下而上或自右向左的顺序解析 WHERE 子句 * 表之间的连接必须写在其他 WHERE 条件之前 七、SELECT 子句中避免使用“*” * Oracle 在解析 SQL 语句的时候,对于“*”将通过查询数据库字典来将其转换...

Global site tag (gtag.js) - Google Analytics