oracle 优化学习笔记_绑定变量

1.作用

绑定变量是一种特殊类型的变量,又被称为占位符。
有效降低系统硬解析的数量。–OLTP

2.用法

2.1 sql文本中使用

SCOTT@regan> var x number;
SCOTT@regan> exec :x :=7369;

PL/SQL procedure successfully completed.

SCOTT@regan> select ename from emp where empno = :x;

ENAME
----------
SMITH

2.2 PL/SQL中使用

语法:execute immediate [带绑定变量的sql] using [绑定变量的值]

SCOTT@regan> declare
  2   vc_name varchar2(10);
  3  begin
  4   execute immediate 'select ename from emp where empno = :1' into vc_name using 7369;
  5   dbms_output.put_line(vc_name);
  6  end;
  7  /
SMITH

PL/SQL procedure successfully completed.

3.使用原则

依据应用系统的类型来决定是否使用绑定变量,即:

  • OLAP/DSS系统,可以不使用
  • OLTP系统,一定要使用,并最好使用批量绑定
  • OLTP和OLAP混合的系统,如有循环,循环内部一定要使用绑定变量,并最好是批量绑定;循环外可以不使用

4.绑定变量窥探

9i中引入,通过参数_optim_peek_user_binds控制,默认为TRUE。

关闭:
alter system set "_optim_peek_user_binds"=false  scope=spfile; 

使sql硬解析的方式:

  • 对目标sql中锁涉及的表执行ddl操作,如comment,grant等
  • DBMS_SHARED_POOL.PURGE
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值