频道栏目
读书频道 > 数据库 > Oracle > Oracle 高性能SQL引擎剖析
3.1.4.1 外关联的谓词推入
2012-12-31 08:39:35     我来说两句
收藏   我要投稿

本文所属图书 > Oracle 高性能SQL引擎剖析

Oracle数据库的性能优化直接关系到系统的运行效率,而影响数据库性能的一个重要因素就是SQL性能问题。本书是作者十年磨一剑的成果之一,深入分析与解剖Oracle SQL优化与调优技术,主要内容包括:第一篇执行计划...  立即去当当网订购

语句存在外关联匹配操作时,转换器可以将关联谓词条件推入视图的查询语句中,从而使之成为其子计划的访问谓词条件。示例如代码清单3-10所示。

代码清单3-10 外关联的谓词推入
HELLODBA.COM>alter session set "_OPTIMIZER_COST_BASED_TRANSFORMATION"=off;
Session altered.

HELLODBA.COM>exec sql_explain('SELECT /*+ NO_MERGE(v) OLD_PUSH_PRED(v) */* FROM t_tables t,
             v_objects_sys v WHERE t.owner =v.owner(+) and t.table_name = v.object_name(+) AND t.tablespace_
             name= :A', 'TYPICAL OUTLINE');
Plan hash value: 4006197802
------------------------------------------------------------------------------------------------------
| Id  | Operation                      | Name               | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT               |                    |  2033 |   557K| 14814   (1)| 00:01:00 |       |       |
|   1 |  NESTED LOOPS OUTER            |                    |  2033 |   557K| 14814   (1)| 00:01:00 |       |       |
|   2 |   TABLE ACCESS BY INDEX ROWID  | T_TABLES           |   184 | 37536 |    21   (0)| 00:00:01 |       |       |
|*  3 |    INDEX RANGE SCAN            | T_TABLES_IDX3      |   184 |       |     1   (0)| 00:00:01 |       |       |
|   4 |   PARTITION HASH SINGLE        |                    |    11 |   847 |    80   (0)| 00:00:01 |     3 |     3 |
|*  5 |    VIEW PUSHED PREDICATE       | V_OBJECTS_SYS      |    11 |   847 |    80   (0)| 00:00:01 |       |       |
|   6 |     TABLE ACCESS BY INDEX ROWID| T_OBJECTS          |  1039 | 80003 |   115   (2)| 00:00:01 |       |       |
|*  7 |      INDEX RANGE SCAN          | T_OBJECTS_IDX_PART |  1039 |       |    82   (3)| 00:00:01 |     3 |     3 |
------------------------------------------------------------------------------------------------------

Outline Data
-------------
  /*+
      BEGIN_OUTLINE_DATA
      INDEX_RS_ASC(@"SEL$661FCD0D" "T_OBJECTS"@"SEL$2" ("T_OBJECTS"."OWNER" "T_OBJECTS"."CREATED"))
      USE_NL(@"SEL$1" "V"@"SEL$1")
      LEADING(@"SEL$1" "T"@"SEL$1" "V"@"SEL$1")
      NO_ACCESS(@"SEL$1" "V"@"SEL$1")
      INDEX_RS_ASC(@"SEL$1" "T"@"SEL$1" ("T_TABLES"."TABLESPACE_NAME"))
      OUTLINE(@"SEL$1")
      OUTLINE(@"SEL$2")
      OUTLINE_LEAF(@"SEL$1")
      OLD_PUSH_PRED(@"SEL$1" "V"@"SEL$1")
      OUTLINE_LEAF(@"SEL$661FCD0D")
      OPT_PARAM('_optimizer_cost_based_transformation' 'off')
      OPTIMIZER_FEATURES_ENABLE('10.2.0.4')
      IGNORE_OPTIM_EMBEDDED_HINTS
      END_OUTLINE_DATA
  */

Predicate Information (identified by operation id):
---------------------------------------------------
   3 - access("T"."TABLESPACE_NAME"=:A)
   5 - filter("T"."TABLE_NAME"="V"."OBJECT_NAME"(+))
   7 - access("OWNER"='SYS')
       filter("OWNER"="T"."OWNER")

上述查询中,关联条件"OWNER"="T"."OWNER"被推入了视图的查询语句中,从而成为其子计划的过滤条件。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.1.4 旧关联谓词推入
下一篇:3.1.4.2 联合查询视图关联查询的谓词推入
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站