频道栏目
读书频道 > 数据库 > Oracle > Oracle 高性能SQL引擎剖析
3.1.1.2 基于关联的含有标量子查询的视图合并
2012-12-30 15:48:02     我来说两句
收藏   我要投稿

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

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

对含有标量子查询的视图与主查询中的对象进行关联操作时发生的视图合并,参见代码清单3-2。

代码清单3-2 基于关联的含有标量子查询的视图合并
HELLODBA.COM>begin
  2   sql_explain('select /*+ qb_name(m) */v.*, o.subobject_name, o.status
  3                  from (select /*+ qb_name(inv) */table_name, owner,
  4                              (select/*+ qb_name(sca) */ u.default_tablespace from t_users u
  5                               where u.username=t.owner) def_ts
  6                        from t_tables t) v,
  7                        t_objects o
  8                  where v.owner = o.owner
  9                  and v.table_name = o.object_name',
 10               'TYPICAL OUTLINE');
 11  end;
 12  /
Plan hash value: 954562591

-------------------------------------------------------------------------------------------
| Id  | Operation                   | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |             | 47585 |  3671K|    55   (0)| 00:00:56 |
|   1 |  TABLE ACCESS BY INDEX ROWID| T_USERS     |     1 |    14 |     1   (0)| 00:00:02 |
|*  2 |   INDEX UNIQUE SCAN         | T_USERS_UK  |     1 |       |     1   (0)| 00:00:02 |
|   3 |  NESTED LOOPS               |             | 47585 |  3671K|    55   (0)| 00:00:56 |
|   4 |   TABLE ACCESS FULL         | T_OBJECTS   | 47585 |  2648K|    54   (0)| 00:00:55 |
|*  5 |   INDEX UNIQUE SCAN         | T_TABLES_PK |     1 |    22 |     1   (0)| 00:00:02 |
-------------------------------------------------------------------------------------------

Outline Data
-------------
  /*+
      BEGIN_OUTLINE_DATA
      INDEX_RS_ASC(@"SCA" "U"@"SCA" ("T_USERS"."USERNAME"))
      USE_NL(@"SEL$F88DB697" "T"@"INV")
      LEADING(@"SEL$F88DB697" "O"@"M" "T"@"INV")
      INDEX(@"SEL$F88DB697" "T"@"INV" ("T_TABLES"."TABLE_NAME" "T_TABLES"."OWNER"))
      FULL(@"SEL$F88DB697" "O"@"M")
      OUTLINE(@"INV")
      OUTLINE(@"M")
      OUTLINE(@"SCA")
      MERGE(@"INV")
      OUTLINE_LEAF(@"SEL$F88DB697")
      OUTLINE_LEAF(@"SCA")
      OPT_PARAM('optimizer_index_cost_adj' 60)
      OPTIMIZER_FEATURES_ENABLE('10.2.0.4')
      IGNORE_OPTIM_EMBEDDED_HINTS
      END_OUTLINE_DATA
  */

Predicate Information (identified by operation id):
---------------------------------------------------
   2 - access("U"."USERNAME"=:B1)
   5 - access("TABLE_NAME"="O"."OBJECT_NAME" AND "OWNER"="O"."OWNER")

在上例中,含有标量子查询(SCA)的子查询(INV)与主查询合并,它们的对象可以直接关联。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.1.1.1 内联视图合并
下一篇:3.1.1.3 含有标量子查询的简单查询视图合并
相关文章
图文推荐
排行
热门
最新书评
特别推荐

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

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