`

Oracle SQL提示含义与示例 --- 概要数据提示

 
阅读更多

QB_NAME

语法:QB_NAME(<有效字符串>)

描述:该提示为所在查询块指定标识符,该标识符可以用于其他提示的全局格式,指定对象所在位置;查询块被引用时的格式为:@<标识符> 或者 <对象名>@<标识符>

HELLODBA.COM>exec sql_explain('select /*+full(@INV U@INV)*/* from t_tables t where exists (select /*+qb_name(inv)*/1 from t_users u where user_id = :A)', 'BASIC OUTLINE');

 

Outline Data

-------------

 

  /*+

      BEGIN_OUTLINE_DATA

      … …

      OUTLINE(@"SEL$1")

      OUTLINE(@"INV")

      OUTLINE_LEAF(@"SEL$1")

      … …

      END_OUTLINE_DATA

  */

DB_VERSION

语法:DB_VERSION(<数据库版本>)

描述:这应该是一个被动的概要提示,指明该语句子游标的执行计划解析时的数据库版本。有助于定位因升级(如从11.2.0.111.2.0.2)而产生的SQL问题。

在任何执行计划的概要数据中都能看到该提示。

IGNORE_OPTIM_EMBEDDED_HINTS

语法:IGNORE_OPTIM_EMBEDDED_HINTS 

描述:使优化器忽视嵌入在SQL语句当中的提示————通常用于存储概要、SQL优化配置等优化器辅助数据;

HELLODBA.COM>exec sql_explain('SELECT /*+ FULL(O) IGNORE_OPTIM_EMBEDDED_HINTS */ * FROM t_objects o where object_id<:A', 'TYPICAL OUTLINE');

 

--------------------------------------------------------------------------------------------

| Id  | Operation                   | Name         | Rows  | Bytes | Cost (%CPU)| Time     |

--------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |              |  2379 |   283K|    10   (0)| 00:00:01 |

|   1 |  TABLE ACCESS BY INDEX ROWID| T_OBJECTS    |  2379 |   283K|    10   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | T_OBJECTS_PK |   428 |       |     2   (0)| 00:00:01 |

--------------------------------------------------------------------------------------------

IGNORE_WHERE_CLAUSE

语法:IGNORE_WHERE_CLAUSE

描述:该提示会导致优化器忽略在其之后的其它嵌入提示。在许多内部递归调用的语句(如动态采样)当中,语句中嵌入的提示都是拼接起来的。在某些情况下,Oracle不愿意一些提示其作用,该提示就会导致后续提示失效。

HELLODBA.COM>exec sql_explain('SELECT /*+ full(O) IGNORE_WHERE_CLAUSE full(u)*/ COUNT(*) from t_objects O, t_users u where o.object_id=:A and u.user_id=:B and o.owner=u.username', 'BASIC');

 

----------------------------------------------------

| Id  | Operation                     | Name       |

----------------------------------------------------

|   0 | SELECT STATEMENT              |            |

|   1 |  SORT AGGREGATE               |            |

|   2 |   NESTED LOOPS                |            |

|   3 |    TABLE ACCESS BY INDEX ROWID| T_USERS    |

|   4 |     INDEX UNIQUE SCAN         | T_USERS_PK |

|   5 |    TABLE ACCESS FULL          | T_OBJECTS  |

----------------------------------------------------

NO_ACCESS

语法:NO_ACCESS([查询块] <视图>)

描述:表示优化器在分析某个查询块时,没有访问指定视图。即在优化该查询块时,没采用针对该视图的优化技术(如视图合并)。

HELLODBA.COM>exec sql_explain('SELECT /*+ qb_name(M) no_merge(v) */* FROM t_tables t, v_objects_sys v WHERE t.owner =v.owner and t.table_name = v.object_name AND v.status = :A', 'TYPICAL OUTLINE');

 

-------------------------------------------------------------------------------------

| Id  | Operation           | Name          | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT    |               | 15643 |  5560K|   325   (3)| 00:00:04 |

|*  1 |  HASH JOIN          |               | 15643 |  5560K|   325   (3)| 00:00:04 |

|   2 |   TABLE ACCESS FULL | T_TABLES      |  2696 |   634K|    28   (4)| 00:00:01 |

|   3 |   VIEW              | V_OBJECTS_SYS | 15643 |  1878K|   296   (3)| 00:00:03 |

|*  4 |    TABLE ACCESS FULL| T_OBJECTS     | 15643 |   855K|   296   (3)| 00:00:03 |

-------------------------------------------------------------------------------------

 

Outline Data

-------------

 

  /*+

      BEGIN_OUTLINE_DATA

      … …

      NO_ACCESS(@"M" "V"@"M")

      FULL(@"M" "T"@"M")

      OUTLINE(@"M")

      OUTLINE_LEAF(@"M")

      … …

      END_OUTLINE_DATA

  */

OPTIMIZER_FEATURES_ENABLE

语法:OPTIMIZER_FEATURES_ENABLE(<版本号>)

描述:指示优化器采用某个版本的特性。版本号为一个字符串(单引号匹配),每个版本可以指定的版本号都不相同,但基本上都是向上兼容的。DEFAULT为采用当前系统默认值

HELLODBA.COM>alter session set OPTIMIZER_FEATURES_ENABLE='10.2.0.4';

 

Session altered.

 

HELLODBA.COM>exec sql_explain('SELECT /*+OPTIMIZER_FEATURES_ENABLE(DEFAULT)*/ * from t_users','BASIC OUTLINE', FALSE);

… …

 

Outline Data

-------------

 

  /*+

      BEGIN_OUTLINE_DATA

      IGNORE_OPTIM_EMBEDDED_HINTS

      OPTIMIZER_FEATURES_ENABLE('11.2.0.1')

      … …

      END_OUTLINE_DATA

  */

OPT_PARAM

语法:OPT_PARAM(<优化参数> 调整值)

描述:设置该语句的优化环境参数。

HELLODBA.COM>exec sql_explain('SELECT /*+QB_NAME(M) OPT_PARAM(''optimizer_index_cost_adj'' 60)*/ * from t_users u where user_id<:A','BASIC OUTLINE');

… …

 

Outline Data

-------------

 

  /*+

      BEGIN_OUTLINE_DATA

      … …

      OPT_PARAM('optimizer_index_cost_adj' 60)

      … …

      END_OUTLINE_DATA

  */

OUTLINE

语法:OUTLINE([<@查询块>])

描述:为查询块建立概要节点。概要节点是优化器进行语句优化时用到的数据结构。

见其它示例当中的概要数据。

OUTLINE_LEAF

语法:OUTLINE_LEAF([<@查询块>])

描述:为查询块建立概要叶子节点。叶子节点将不再做进一步查询转换优化。

示例(以下示例中,概要叶子节点的建立导致查询块中的视图不能被合并):

HELLODBA.COM>exec sql_explain('SELECT /*+ qb_name(M) OUTLINE_LEAF(@M) */* FROM t_tables t, v_objects_sys v WHERE t.owner =v.owner and t.table_name = v.object_name AND v.status = :A', 'TYPICAL OUTLINE');

 

-------------------------------------------------------------------------------------

| Id  | Operation           | Name          | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT    |               | 15643 |  5560K|   325   (3)| 00:00:04 |

|*  1 |  HASH JOIN          |               | 15643 |  5560K|   325   (3)| 00:00:04 |

|   2 |   TABLE ACCESS FULL | T_TABLES      |  2696 |   634K|    28   (4)| 00:00:01 |

|   3 |   VIEW              | V_OBJECTS_SYS | 15643 |  1878K|   296   (3)| 00:00:03 |

|*  4 |    TABLE ACCESS FULL| T_OBJECTS     | 15643 |   855K|   296   (3)| 00:00:03 |

-------------------------------------------------------------------------------------

RBO_OUTLINE

语法:RBO_OUTLINE

描述:指示优化器建立基于规则的概要数据结构。

 

参考至:http://www.hellodba.com/reader.php?ID=198&lang=cn

如有错误,欢迎指正

邮箱:czmcj@163.com

分享到:
评论

相关推荐

    Oracle分析函数 示例数据

    Oracle分析函数的示例数据 其实也就是Mastering oracle sql书的SQL脚本

    oracle10g课堂练习I(1)

    使用 SQL 创建约束条件:示例 7-20 查看表中的列 7-21 查看表的内容 7-22 对表执行的操作 7-23 删除表 7-24 截断表 7-25 索引 7-26 索引类型 7-27 B 树索引 7-28 位图索引 7-30 索引选项 7-32 创建索引 7...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...

    Oracle SQL_Plus

    以上是基于《Oracle SQL\*Plus口袋参考手册》的内容概要,涵盖了SQL\*Plus的基本使用方法、数据操作、事务管理、报告格式化及SQL性能优化等方面的知识点。通过掌握这些内容,用户可以更高效地使用SQL\*Plus来管理和...

    ORACLE 数据基础操作概要

    ### ORACLE 数据基础操作概要 #### 一、数据库的连接 在 Oracle 数据库中,进行任何操作前都需要先连接到数据库。连接命令的基本语法如下: ```sql connect 用户名称/密码@数据库连接(网络服务名); ``` 其中,...

    oracle10g课堂练习I(2)

    还原数据与重做数据 9-8 监视还原 9-9 管理还原 9-11 配置还原保留期 9-12 确保还原保留期 9-13 调整还原表空间的大小 9-14 使用还原指导 9-15 小结 9-16 练习概览:管理还原段 9-17 10 实施 Oracle ...

    Oracle SQL优化

    对于处理大规模数据集的应用来说,高质量与低质量SQL语句之间的执行速度差距可能会高达上百倍。 #### 二、SQL语句编写注意问题 ##### 2.1 ISNULL 与 ISNOTNULL - **问题**: 使用`IS NULL`或`IS NOT NULL`会导致...

    Oracle SQL表连接技术详解及其应用场景

    内容概要:本文详细介绍了Oracle SQL中的表连接技术,包括常见的连接类型如排序--合并连接(SMJ)、嵌套循环(NL)和哈希连接(HJ)。文中解释了每种连接的工作原理、适用场景以及优缺点,通过具体示例展示了这些...

    Oracle数据导入全程

    - **数据导入工具**:Oracle提供了多种工具来进行数据导入,主要包括`SQL*Loader`、`Data Pump`等。 - **SQL*Loader简介**:适用于大批量数据的快速加载,支持多种数据格式(如CSV、文本文件等)。 - **Data Pump...

    PLSQL Developer 7.0 最新中文手册.pdf

    - 提示信息的显示与隐藏、提示信息内容定制。 - **用户界面-选项**: - 主题颜色设置、字体大小调整。 - **用户界面-工具栏**: - 工具栏自定义、工具栏图标更换。 - **用户界面-浏览器**: - 浏览器布局调整...

    windows 安装oracle11G 超级详细

    1. **关闭杀毒软件与防火墙**:在安装Oracle 11g R2之前,请确保关闭所有杀毒软件及Windows防火墙,以免它们干扰安装过程。 2. **避免中文路径**:Oracle的安装文件不应存放在含有中文字符的路径中。例如,推荐的...

    ORACLE中的数据库、服务名、实例概要

    ### ORACLE中的数据库、服务名、实例概要 在Oracle数据库管理系统中,了解数据库、服务名及实例的概念及其相互关系对于高效管理和维护数据库至关重要。本文将深入探讨这些核心概念,并结合给定的部分内容来详细解释...

    oracle service_name参数

    ### Oracle Service_Name 参数详解 #### 一、概述 在Oracle数据库管理中,`service_name`是一个重要的参数,它...此外,理解`service_name`与监听器之间的关系也有助于更好地管理多实例环境下的Oracle数据库系统。

    SQLPLSQL.pdf

    - **PL/SQL概要**:介绍PL/SQL的发展背景及其在Oracle数据库中的地位。 - **PL/SQL优点**:列举PL/SQL相对于纯SQL的优势。 - **PL/SQL块结构**:详细说明PL/SQL块的组成部分,包括声明部分、执行部分和异常处理部分...

    PL/SQL中文使用说明

    综上所述,《PL/SQL Developer 7.0中文使用说明书》是一份非常实用的文档,它不仅详细介绍了软件的各项功能和使用方法,还提供了丰富的示例和技巧,对于Oracle开发人员来说具有很高的参考价值。无论是初学者还是有...

    Oracle11g_新特性及常用维护工具详解

    - **3.1 Oracle11g默认安装使用保留的11g增强安全设置(包括审记和默认的口令概要文件** - **3.1.1 oracle数据库时提示“ORA-28002:7天之后口令将过期”** - **3.1.2 Oracle11g版本中密码大小写敏感** - **3.1.3 ...

    Oracle ODI 11G安装与技术文档

    ### Oracle ODI 11G 安装与关键技术解析 #### 一、Oracle ODI 11G 简介及环境配置 Oracle Data Integrator (ODI) 是一款强大的企业级数据集成工具,用于实现数据抽取、转换、加载(ETL)等功能。Oracle ODI 11G 相比...

Global site tag (gtag.js) - Google Analytics