`

Oracle 绑定变量 详解

 
阅读更多


绑定变量对Oracle 的性能来说是非常重要的,之前有整理一些理论知识:

       Oracle 绑定变量 详解

       http://blog.csdn.net/tianlesoftware/archive/2010/09/01/5856430.aspx

       Event 10053 执行计划 绑定变量 Bind peeking

       http://blog.csdn.net/tianlesoftware/archive/2010/04/29/5544307.aspx


       在这里演示一下绑定变量的例子, 注意,绑定变量对索引选择性不好的列不适用,可能会导致错误的执行计划,从而影响SQL 效率。



有关索引的选择性,参考:

       Oracle 索引的维护

       http://blog.csdn.net/tianlesoftware/archive/2010/06/19/5680706.aspx




示例



SQL> create table t1(c1 number,c2 number,c3 number,c4 number);

Table created.



SQL> declare

  2  i number;

  3  j number;

  4  str varchar2(200);

  5  begin

  6  i :=1;

  7  j :=2;

  8  str :='insert into t1 values(:x,:y,:x,:y)';

  9  execute immediate str using i,j,i,j;

10  end;

11  /



PL/SQL procedure successfully completed.



SQL> select * from t1;



C1         C2         C3         C4

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

1          2          1          2



这里是绑定变量的一个简单应用, 绑定变量起到占位的作用.



进一步的测试:ORACLE系统本身是能够对变量做绑定的。



SQL> set timing on

SQL> declare       

  2  i number;

  3  begin

  4  for i in 1..1000 loop

  5     insert into t1 values(i,i+1,i+2,i+3);

  6  end loop;

  7  end;

  8  /



PL/SQL procedure successfully completed.

Elapsed: 00:00:00.28



SQL> select count(*) from t1;

  COUNT(*)

----------

      1001



Elapsed: 00:00:00.01



       在这段代码块的执行过程中,ORACLE会自动将其中的变量进行绑定。 也就是说:这段代码执行了1000次 insert 语句,但是每次发出去的语句都是一样的,这1000次SQL的hash 值是一样的,他们的执行计划也是一样的。





对上述代码进行修改:



SQL> declare

  2     i number;

  3     str varchar2(200);

  4  begin

  5     for i in 1..1000 loop

  6     str:='insert into t1 values ('||to_char(i)||','||to_char(i)||'+1,'||to_char(i)||'+2,'||to_char(i)||'+3)';

  7     execute immediate str;

  8  end loop;

  9  end;

10  /



PL/SQL procedure successfully completed.



Elapsed: 00:00:02.88



这段代码没有自动使用绑定变量,所以时间上明显长。 我们使用绑定变量看看。



SQL> declare

  2     i number;

  3     str varchar2(200);

  4  begin

  5     for i in 1..1000 loop

  6     str:='insert into t1 values (:i,:i+1,:i+2,:i+3)';

  7     execute immediate str using i,i,i,i;

  8  end loop;

  9  end;

10  /



PL/SQL procedure successfully completed.



Elapsed: 00:00:00.19



使用绑定变量后,时间明显要少很多。

转:http://blog.csdn.net/tianlesoftware/article/details/6324243
分享到:
评论

相关推荐

    PLSQL绑定变量用法小结归纳.pdf

    由于我们使用了绑定变量,所以Oracle只需要软分析一次,而不需要每次都进行硬分析,从而提高了数据库的性能。 需要注意的是,绑定变量可以在PL/SQL过程中使用,例如: Declare i number; Begin i := 1; Select ...

    oracle执行计划详解

    oracle 执行计划详解 Oracle 执行计划是数据库性能调整的关键部分,对于想要学习 Oracle 数据库的朋友非常有帮助。下面是Oracle 执行计划的背景知识和重要概念。 共享 SQL 语句 Oracle 将 SQL 语句及解析后得到的...

    ORACLE的执行计划详解文档

    本文档详细解释了 ORACLE 的执行计划背景知识,包括共享 SQL 语句、执行计划的存储和共享、绑定变量的使用、执行计划的生成和共享、执行计划的优化等方面的内容。 一、共享 SQL 语句 ORACLE 对相同的 SQL 语句进行...

    oracle 执行计划 详解

    "Oracle 执行计划详解" Oracle 执行计划是数据库性能优化的关键。为了更好地理解和优化 Oracle 数据库的执行计划,我们需要了解执行计划的生成过程、优化方法和执行计划的解读方法。 执行计划生成过程 执行计划的...

    Oracle语句优化53个规则详解

    16. 使用绑定变量避免参数嗅探:参数嗅探可能导致优化器选择错误的执行计划,绑定变量可以防止这种情况。 以上只是部分优化规则,实际优化过程中还需要结合具体情况进行调整。理解这些规则并灵活应用,能有效提升...

    30个Oracle语句优化规则详解

    然而,共享的条件非常严格,要求SQL语句在字符级别、对象引用及绑定变量名称上完全一致。这包括对空格、换行符的敏感性,以及私有同义词和公共同义词的区别,以及不同用户对相同对象的不同权限。 为了充分利用SQL...

    oracle详解课件pp格式t

    优化处理器管理是提升数据库性能的关键,包括合理设置并行度、使用绑定变量等策略。 3. **存储器管理**:Oracle数据库采用了一种称为SGA(系统全局区)的内存结构,其中包含了缓存数据、解析缓冲区、重做日志缓冲区...

    Oracle高性能SQL引擎剖析 SQL优化与调优机制详解

    4. **绑定变量**:使用绑定变量可以避免硬解析,提高SQL语句的重用率,从而减少解析开销和内存占用。 5. **并行查询**:Oracle支持并行查询,将大任务分解为多个子任务并发执行,以加速处理速度。但过度的并行可能...

    Oracle DBA调优技术学习笔记

    Oracle 12c-优化 Hint详解.pdf Oracle 12c-优化 Oracle 索引技术.pdf Oracle 12c 执行计划.pdf ...Oracle 12c 使用绑定变量 VS 不使用绑定变量.pdf Oracle 12c 自动工作负载信息库AWR.pdf Oracle 12c 常用SQL.pdf

    oracle语句优化30个规则详解.docx

    以下是针对“Oracle 语句优化30个规则详解”的部分内容进行的详细解读: 1. **优化器选择**: - Oracle 提供了三种优化器:RULE(基于规则)、COST(基于成本)和CHOOSE(选择性)。COST是最常用的选择,因为它...

    oracle dba必备技能详解

    理解索引、表分区、绑定变量和缓存策略对性能的影响至关重要。 4. **备份与恢复**:Oracle提供RMAN( Recovery Manager)进行数据库备份和恢复操作。DBA应掌握如何制定备份策略,执行完整备份、增量备份和差异备份...

    Oracle语句优化53个规则详解.doc

    7. 使用绑定变量:绑定变量可以减少解析次数,提高SQL执行效率,尤其是在循环或批量处理中。 8. 分析和更新统计信息:定期分析表和索引,确保优化器有最新的统计信息来制定执行计划。 9. 适当调整初始化参数:如...

    Oracle语句优化规则详解【技术文档】

    1. 使用绑定变量:绑定变量可以避免硬解析,提高SQL执行效率。 2. 分析与重构:定期分析性能问题,对SQL语句进行重构,以适应系统变化。 总结,Oracle语句优化涉及多方面,包括索引、连接、子查询、函数、游标、...

    性能优化案例分析与Oracle语句优化53个规则详解

    例如,通过使用绑定变量可以避免硬解析,提高SQL执行效率;利用 Explain Plan 分析SQL执行计划,识别潜在的性能瓶颈;使用索引覆盖来减少I/O操作,提升查询速度。 其次,数据库优化不仅限于SQL层面,还包括数据库...

    cx_Oracle源码包

    7. **绑定变量和返回值**:`cx_Oracle`支持绑定变量到SQL语句中,这有助于防止SQL注入攻击并提高性能。同时,还可以设置输出变量来接收SQL语句的返回值。 8. **异常处理**:`cx_Oracle`定义了一系列的异常类,如`...

    Oracle语句优化53个规则详解.rar

    31. **使用绑定变量避免全表扫描**:Oracle无法使用索引时,绑定变量可能避免全表扫描。 32. **考虑使用索引组织表**:对于只读或更新较少的表,IO性能优异。 33. **优化临时表**:合理使用临时表,减少内存和磁盘...

Global site tag (gtag.js) - Google Analytics