[20191213]toad 12下BIND_AWARE提示无效.txt

[20191213]toad 12下BIND_AWARE提示无效.txt[20191213]toad 12下BIND_AWARE提示无效.txt–//链接http://blog.itpub.net/267265/viewspace-2130781/的测试,发现当时测试的

[20191213]toad 12下BIND_AWARE提示无效.txt

–//链接http://blog.itpub.net/267265/viewspace-2130781/的测试,发现当时测试的错误.有空再次验证看看.

1.环境:
SCOTT@book> @ ver1
PORT_STRING                    VERSION        BANNER
—————————— ————– ——————————————————————————–
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64bit Production

create table t as select rownum id ,lpad(“x”,100,”x”) name ,lpad(“1”,1) flag from dual connect by level<=1e5;
update t set flag=”0″ where id=1e5;
commit ;
create index i_t_flag on t(flag);

SCOTT@book> execute sys.dbms_stats.gather_table_stats ( OwnName => “”,TabName => “t”,Estimate_Percent => NULL,Method_Opt => “FOR ALL COLUMNS SIZE 1 for columns flag size 4”,Cascade => True ,No_Invalidate => false)
PL/SQL procedure successfully completed.

2.测试:
–//先写sql语句在toad sql编辑窗口:
select  /*+ bind_aware gggg*/ * from t where flag=:x;
–//然后选择执行,代入参数”0″.查询字串gggg,获取sql_id=ddgfa29wynq6d.

SCOTT@book> @ dpc ddgfa29wynq6d outline
PLAN_TABLE_OUTPUT
————————————-
SQL_ID  ddgfa29wynq6d, child number 0
————————————-
select  /*+ bind_aware gggg*/ * from t where flag=:x
Plan hash value: 1601196873
—————————————————————————
| Id  | Operation         | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time   |
—————————————————————————
|   0 | SELECT STATEMENT  |      |        |       |   435 (100)|          |
|*  1 |  TABLE ACCESS FULL| T    |  50000 |  5273K|   435   (1)| 00:00:06 |
—————————————————————————
Query Block Name / Object Alias (identified by operation id):
————————————————————-
   1 – SEL$1 / T@SEL$1
Outline Data
————-
  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE(“11.2.0.4”)
      DB_VERSION(“11.2.0.4”)
      OPT_PARAM(“_optim_peek_user_binds” “false”)
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ALL_ROWS
      OUTLINE_LEAF(@”SEL$1″)
      FULL(@”SEL$1″ “T”@”SEL$1”)
      END_OUTLINE_DATA
  */
Predicate Information (identified by operation id):
—————————————————
   1 – filter(“FLAG”=:X)

–//注意看下划线,不知道为什么toad要加入修改参数”_optim_peek_user_binds” “false”,不做绑定变量peek,
–//还可以一个细节就是没有获取绑定变量的值.导致提示bind_aware失效.

3.继续测试:
–//取消load cached plan if possible.看到的测试结果也是一样.
–//总之不知道为什么toad 12的版本为什么执行时将会话的_optim_peek_user_binds=false.而导致的提示失效.
–//这个应该在优化与调试sql语句是应该引起注意.
–//另外一个简单的验证就是在sqlplus执行:
SCOTT@book> variable x varchar2(1)
SCOTT@book> exec :x := “0”;
PL/SQL procedure successfully completed.

SCOTT@book> @ dpc “” outline
PLAN_TABLE_OUTPUT
————————————-
SQL_ID  8srddvbs5ydfv, child number 0
————————————-
select  /*+ bind_aware OPT_PARAM(“_optim_peek_user_binds” “false”) */ *
from t where flag=:x
Plan hash value: 1601196873
—————————————————————————
| Id  | Operation         | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time   |
—————————————————————————
|   0 | SELECT STATEMENT  |      |        |       |   435 (100)|          |
|*  1 |  TABLE ACCESS FULL| T    |  50000 |  5273K|   435   (1)| 00:00:06 |
—————————————————————————
Query Block Name / Object Alias (identified by operation id):
————————————————————-
   1 – SEL$1 / T@SEL$1
Outline Data
————-
  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE(“11.2.0.4”)
      DB_VERSION(“11.2.0.4”)
      OPT_PARAM(“_optim_peek_user_binds” “false”)
      ALL_ROWS
      OUTLINE_LEAF(@”SEL$1″)
      FULL(@”SEL$1″ “T”@”SEL$1”)
      END_OUTLINE_DATA
  */
Predicate Information (identified by operation id):
—————————————————
   1 – filter(“FLAG”=:X)

–//bind_aware提示无效.
–//如果语句在sqlplus下先执行再在toad下观察呢?
SCOTT@book> select  /*+ bind_aware pppp */ * from t where flag=:x;
        ID NAME                                     F
———- —————————————- –
    100000 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0
           xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           xxxxxxxxxxxxxxxxxxxx

SCOTT@book> @ dpc “” “”
PLAN_TABLE_OUTPUT
————————————-
SQL_ID  8b15sjx54pvfw, child number 0
————————————-
select  /*+ bind_aware pppp */ * from t where flag=:x

Plan hash value: 120143814

—————————————————————————————–
| Id  | Operation                   | Name     | E-Rows |E-Bytes| Cost (%CPU)| E-Time   |
—————————————————————————————–
|   0 | SELECT STATEMENT            |          |        |       |     2 (100)|          |
|   1 |  TABLE ACCESS BY INDEX ROWID| T        |      1 |   108 |     2   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN          | I_T_FLAG |      1 |       |     1   (0)| 00:00:01 |
—————————————————————————————–

–//然后在toad下执行,代入参数”0″;

SQL_ID  8b15sjx54pvfw, child number 0
————————————-
select  /*+ bind_aware pppp */ * from t where flag=:x
 
Plan hash value: 120143814
 
—————————————————————————————–
| Id  | Operation                   | Name     | E-Rows |E-Bytes| Cost (%CPU)| E-Time   |
—————————————————————————————–
|   0 | SELECT STATEMENT            |          |        |       |     2 (100)|          |
|   1 |  TABLE ACCESS BY INDEX ROWID| T        |      1 |   108 |     2   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN          | I_T_FLAG |      1 |       |     1   (0)| 00:00:01 |
—————————————————————————————–
 
Query Block Name / Object Alias (identified by operation id):
————————————————————-
 
   1 – SEL$1 / T@SEL$1
   2 – SEL$1 / T@SEL$1
 
Outline Data
————-
 
  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE(“11.2.0.4”)
      DB_VERSION(“11.2.0.4”)
      ALL_ROWS
      OUTLINE_LEAF(@”SEL$1″)
      INDEX_RS_ASC(@”SEL$1″ “T”@”SEL$1” (“T”.”FLAG”))
      END_OUTLINE_DATA
  */
 
Peeked Binds (identified by position):
————————————–
 
   1 – (VARCHAR2(30), CSID=852): “0”
 
Predicate Information (identified by operation id):
—————————————————
 
   2 – access(“FLAG”=:X)
 
Column Projection Information (identified by operation id):
———————————————————–
 
   1 – “T”.”ID”[NUMBER,22], “T”.”NAME”[VARCHAR2,100], “FLAG”[VARCHAR2,1]
   2 – “T”.ROWID[ROWID,10], “FLAG”[VARCHAR2,1]
 
Note
—–
   – Warning: basic plan statistics not available. These are only collected when:
       * hint “gather_plan_statistics” is used for the statement or
       * parameter “statistics_level” is set to “ALL”, at session or system level
 
SQL_ID  8b15sjx54pvfw, child number 1
————————————-
select  /*+ bind_aware pppp */ * from t where flag=:x
 
Plan hash value: 1601196873
 
—————————————————————————
| Id  | Operation         | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time   |
—————————————————————————
|   0 | SELECT STATEMENT  |      |        |       |   435 (100)|          |
|*  1 |  TABLE ACCESS FULL| T    |  50000 |  5273K|   435   (1)| 00:00:06 |
—————————————————————————
 
Query Block Name / Object Alias (identified by operation id):
————————————————————-
 
   1 – SEL$1 / T@SEL$1
 
Outline Data
————-
 
  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE(“11.2.0.4”)
      DB_VERSION(“11.2.0.4”)
      OPT_PARAM(“_optim_peek_user_binds” “false”)
      ALL_ROWS
      OUTLINE_LEAF(@”SEL$1″)
      FULL(@”SEL$1″ “T”@”SEL$1”)
      END_OUTLINE_DATA
  */
 
Predicate Information (identified by operation id):
—————————————————
 
   1 – filter(“FLAG”=:X)
 
Column Projection Information (identified by operation id):
———————————————————–
 
   1 – “T”.”ID”[NUMBER,22], “T”.”NAME”[VARCHAR2,100], “FLAG”[VARCHAR2,1]
 
Note
—–
   – Warning: basic plan statistics not available. These are only collected when:
       * hint “gather_plan_statistics” is used for the statement or
       * parameter “statistics_level” is set to “ALL”, at session or system level

–//你可以看到生成新的子光标.感觉toad这样设计不好,不利于生产系统调优测试.

[20191213]toad 12下BIND_AWARE提示无效.txt

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10498.html

(0)
上一篇 2022-12-26
下一篇 2022-12-26

相关推荐

  • Python __del__方法详解

    Python __del__方法详解Python是一种面向对象的编程语言,因此,相比于其他的编程语言,Python更容易实现内存回收和垃圾收集。Python中的__del__方法是一个特殊的魔术方法,它允许Python在对象被垃圾回收之前执行一些特殊的操作。在本文中,我们将深入探讨Python中的__del__方法,介绍它的特点、优点以及一些重要的注意事项。

    2024-06-18
    44
  • Oracle系统结构概述二(实例结构)

    Oracle系统结构概述二(实例结构)
    一.概述 Oracle实例的构成: Oracle数据库实例(Oracle Instance)主要包括Oracle进程结构和Oracle内存结构两种。 二.O…

    2023-04-05
    157
  • SQL 语句-partition by「建议收藏」

    SQL 语句-partition by「建议收藏」/****** ******/ 初始化数据 create table employee (empid int, deptid int, salary decimal(10, 2)) insert i…

    2023-01-25
    181
  • Oracle 11g 数据库的部署[通俗易懂]

    Oracle 11g 数据库的部署[通俗易懂]新手入门之Oracle 11g部署 Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可…

    2023-03-20
    144
  • MySQL8.0.26安装与卸载

    MySQL8.0.26安装与卸载一、安装 1.官网下载 百度进入官网,学习用社区版够了,我下的是压缩版点这直达下载页 据说8.X版本性能优化,比5.7版本快2倍! 接着,不登录直接下载 2.创建配置 下载完后,建议解压到一个没有中文

    2023-04-19
    153
  • 用 Python 求质数

    用 Python 求质数质数是只能被1和本身整除的自然数,在密码学和计算机科学中常被用到。Python是一种高效、易学易用的编程语言,很适合进行质数计算。本文将介绍Python求质数的方法和相关的编程技巧。

    2024-06-12
    54
  • MySQL 表字段唯一性约束设置方法unique「终于解决」

    MySQL 表字段唯一性约束设置方法unique「终于解决」 建表时加上唯一性约束 CREATE TABLE `t_user` ( `Id` int(11) NOT NULL AUTO_INCREMENT, — 自增 `name` varchar(1…

    2023-03-24
    126
  • Python安装PyQt5教程

    Python安装PyQt5教程Python是一种广泛使用的高级编程语言,发展迅速、功能丰富,被广泛应用于Web开发、数据处理、人工智能等领域。

    2024-07-13
    43

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注