oracle_执行计划_谓词信息和数据获取(上)
一:简要说明
在查看执行计划的信息中,经常会看到两个谓词filter和access,它们的区别是什么,理解了这两个词对我们解读Oracle的执行计划信息会有所帮助。
简单说,执行计划如果显示是access,就表示这个谓词条件的值将会影响数据的访问路径(表还是索引),而filter表示谓词条件的值并不会影响数据访问路径,只起到过滤的作用。
二:举例说明
C:\Documents and Settings\Administrator>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 12月 26 10:17:27 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn haec0/test@HATEST
已连接。
SQL> create table zhou_t (x int , y int );
表已创建。
SQL> set autotrace trace exp;
SQL> select /*+rule*/ * from zhou_t where x=5;
执行计划
----------------------------------------------------------
Plan hash value: 1395150869
------------------------------------
| Id | Operation | Name |
------------------------------------
| 0 | SELECT STATEMENT | |
|* 1 | TABLE ACCESS FULL| ZHOU_T |
------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("X"=5)
Note
-----
- rule based optimizer used (consider using cbo)
因为表zhou_t没有创建索引,执行计划没有选择数据访问路径的余地,谓词条件在这里只是起到数据过滤的作用,所以使用了filter
如果在表上创建了索引呢?下面来看看:
SQL> create index zhou_t_idx on zhou_t(x,y);
索引已创建。
SQL> select /*+rule*/ * from zhou_t where x=5;
执行计划
----------------------------------------------------------
Plan hash value: 42197324
---------------------------------------
| Id | Operation | Name |
---------------------------------------
| 0 | SELECT STATEMENT | |
|* 1 | INDEX RANGE SCAN| ZHOU_T_IDX |
---------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("X"=5)
Note
-----
- rule based optimizer used (consider using cbo)
从上面可以看到,谓词条件影响到数据访问的路径------选择了索引,所以用access
分享到:
相关推荐
Oracle执行计划还包括其他访问方法,如索引扫描(Index Scan)、索引唯一扫描(Index Unique Scan)、索引快速全扫描(Index Fast Full Scan)以及各种类型的连接操作,如嵌套循环(Nested Loop)、哈希连接(Hash ...
在执行计划中,谓词的优化直接影响到查询效率,合理的谓词可以帮助减少扫描的数据量。 Driving Table和Probed Table是用于描述连接操作的两个关键概念。Driving Table(驱动表)通常是返回行数较少的表,它先被访问...
本文将深入解析Oracle执行计划的关键概念及其应用场景,帮助DBA和开发人员更好地理解和优化Oracle数据库性能。 #### 一、相关概念 1. **ROWID**:ROWID是Oracle数据库中的一个特殊伪列,它标识了表中每一行的唯一...
在Oracle数据库管理系统中,"并集查询"是SQL语言中的一种基本操作,它用于合并...同时,查阅文本文件以获取额外的上下文信息。通过这种方式,你可以学习到如何在实际项目中灵活运用并集查询来处理多源数据的整合问题。
动态策略是Oracle9i及之前的默认策略,对于每行数据和每个用户,策略函数都会在每次访问时重新计算,这可能导致性能下降。而在Oracle10g中,引入了新的策略类型以优化性能: 1. **动态策略**(dynamic):这是默认...
如果这5500行数据被认为是无效的,那么算法会再次采样55000行,直到获取有效的统计信息为止。这5500这个数字是通过数学证明的,能够保证以90%以上的概率使得采样的直方图中桶(buckets)的数据分布是均匀的。 直方...
- 数据字典是数据库内部用来存储关于数据库本身信息的表和视图集合,例如`dba_tables`、`all_indexes`等,用于查询数据库对象的详细信息。 **1.7 ORACLE数据类型** - Oracle支持多种数据类型,包括数值类型(如...
查询优化器通过智能分析和调整SQL语句的执行计划,确保以最低的资源消耗完成数据检索任务。本文将深入探讨Oracle9i查询优化的核心技术,包括SQL语句转换、执行计划选择、开销模型与统计,以及动态运行时间优化。 ##...
优化器会根据操作对象的统计信息和动态采样来生成最终的执行计划。这个计划决定了Oracle如何执行SQL语句,从而影响整体性能。 Oracle优化器有两种:基于规则的优化器(RBO)和基于成本的优化器(CBO)。RBO在Oracle...
而硬解析则涉及更复杂的优化过程,包括视图合并、谓词下推、子查询展开、查询重写和OR表达式展开,并根据统计信息估算Selectivity、Cardinality和Cost,选择最优执行计划。 - Selectivity:表示查询条件过滤数据的...
- **收集SQL追踪信息**:使用Extended SQL Trace获取详细的执行情况。 - **收集执行计划**:通过`EXPLAIN PLAN`命令获得查询的执行路径。 - **查询相关统计信息**:如表的行数、索引使用情况等。 #### 五、数据分析...
1. **高性能**: 由于PL/SQL是在Oracle服务器内部执行的,因此它可以高效地访问和处理数据库中的数据。 2. **模块化**: 支持存储过程、函数、包等,便于复用代码。 3. **安全性**: 可以限制对数据库对象的访问权限,...
总体而言,本文针对Oracle数据库中SQL语句的优化进行了一系列的分析,不仅详细介绍了Oracle优化器的工作原理和影响执行计划的因素,而且通过实例分析了SQL语句的优化类型和规则。本文为数据库管理人员、开发人员以及...
Oracle SQL Hint是Oracle数据库中一个强大的工具,能够帮助开发者和DBA更好地控制SQL的执行方式,从而实现更高效的查询性能。正确理解和灵活运用Hint,能够在复杂的数据处理场景中发挥重要作用。然而,由于其潜在的...
在Oracle中,我们可以通过跟踪SQL实际执行计划来获取这些统计信息。 综上所述,索引在数据库优化中扮演着至关重要的角色。一个良好的索引策略,不仅可以提高查询的执行效率,还可以降低数据库系统的整体执行成本。...
2. **基于成本的优化(Cost-Based Optimization, CBO)**:CBO根据可用的访问路径、对象的统计信息和嵌入的提示来选择成本最低的执行计划。 - **优点**:更智能,能更好地适应不同的查询场景。 - **缺点**:需要准确...
作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...
可以查询数据字典视图来获取触发器的相关信息。 5. **应用举例** - 触发器可用于实现复杂的业务规则,如在插入新数据时检查数据的合法性,或者在更新记录时自动更新相关联的字段。 - 审计功能:通过触发器记录...
在Oracle 10.2中,你可以使用各种谓词(如WHERE子句)、连接(JOIN操作)、分组(GROUP BY子句)、聚合函数(如COUNT, SUM, AVG等)和排序(ORDER BY子句)来定制你的查询结果。 3. 数据操作:INSERT语句用于向表中...