绑定变量对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
分享到:
相关推荐
oracle 执行计划详解 Oracle 执行计划是数据库性能调整的关键部分,对于想要学习 Oracle 数据库的朋友非常有帮助。下面是Oracle 执行计划的背景知识和重要概念。 共享 SQL 语句 Oracle 将 SQL 语句及解析后得到的...
"Oracle 执行计划详解" Oracle 执行计划是数据库性能优化的关键。为了更好地理解和优化 Oracle 数据库的执行计划,我们需要了解执行计划的生成过程、优化方法和执行计划的解读方法。 执行计划生成过程 执行计划的...
### Oracle BIEE 变量总结与应用 #### 一、引言 Oracle Business Intelligence Enterprise Edition (BIEE) 是一款强大的商业智能工具,能够帮助组织机构从数据中提取价值并做出更好的决策。在 BIEE 的开发过程中,...
本文档详细解释了 ORACLE 的执行计划背景知识,包括共享 SQL 语句、执行计划的存储和共享、绑定变量的使用、执行计划的生成和共享、执行计划的优化等方面的内容。 一、共享 SQL 语句 ORACLE 对相同的 SQL 语句进行...
- SQL书写规则,比如绑定变量的使用,以及避免在where条件中使用变量判断等。 2. CBO优化案例分析 - 分析了不同的案例背景和系统配置,以及测试方法。 - 提供了SQL调优的思路和方法,包括面对数据分布不均匀、...
- **绑定变量的影响**:如果两个SQL语句中使用了不同的绑定变量名称,即使在运行时这些变量的实际值相同,Oracle也不会认为这两个语句是相同的,因此不会共享执行计划。 #### 总结 通过合理选择优化器模式、利用...
- 使用相同的绑定变量名称:即使绑定变量的实际值不同,也必须使用相同的变量名。 - **实例说明**: - 如果两个用户分别使用私有同义词`sal_limit`来访问不同的对象,那么他们的SQL语句不会被共享。 - 如果两个...
### Oracle语句优化详解 #### 一、Oracle优化器模式的理解与选择 Oracle数据库通过不同的优化器模式来决定执行计划的选择。这些模式包括基于规则的优化(RULE)、基于成本的优化(CBO)以及自动选择(CHOOSE)。 ...
### Oracle语句优化规则详解 #### 一、选用适合的Oracle优化器 Oracle数据库提供了三种主要的优化器:基于规则的优化器(RULE)、基于成本的优化器(COST)和选择性优化器(CHOOSE)。优化器的选择直接影响到SQL...
对于绑定变量,必须使用相同名称的绑定变量才能确保SQL语句的共享,即使在运行时,这些变量被赋予了相同的值。 文档中也提到了绑定变量的重要性。绑定变量是在SQL语句中使用占位符代替直接在查询中指定的值,这样...
例如,插入数据时,可以使用变量绑定的方式执行INSERT语句: ```python sql = "INSERT INTO table_name (column1, column2) VALUES (:1, :2)" params = ('value1', 'value2') cursor.execute(sql, params) ``` 这段...
当多个查询具有相同的结构但不同参数时,使用绑定变量可以使Oracle重用解析计划。例如,动态SQL和存储过程中的参数化查询应尽可能使用绑定变量。 5. **缓存与高速缓冲**: Oracle使用缓存来加速数据访问。共享池中...
例如,合理使用索引、避免全表扫描、使用绑定变量等。其次是SQL语句的结构调整,例如通过重写SQL语句来减少中间结果集的生成,降低资源消耗。 再者,要熟悉Oracle的执行计划分析。执行计划是SQL语句性能的蓝图,...
3. **绑定变量一致**:SQL语句中使用的绑定变量名称也必须完全相同才能共享。 通过以上方法,不仅可以提高Oracle数据库的查询性能,还能有效利用系统资源,降低维护成本。对于大型数据库应用而言,合理设置优化器...
【VC++开发Oracle数据库应用程序详解】 在开发Oracle数据库应用程序时,Visual C++(简称VC)是一种常见的客户端开发工具,尤其适合构建与Oracle数据库交互的应用。本文主要探讨两种使用VC++开发Oracle应用程序的...
优化处理器管理是提升数据库性能的关键,包括合理设置并行度、使用绑定变量等策略。 3. **存储器管理**:Oracle数据库采用了一种称为SGA(系统全局区)的内存结构,其中包含了缓存数据、解析缓冲区、重做日志缓冲区...
4. **绑定变量**:使用绑定变量可以避免硬解析,提高SQL语句的重用率,从而减少解析开销和内存占用。 5. **并行查询**:Oracle支持并行查询,将大任务分解为多个子任务并发执行,以加速处理速度。但过度的并行可能...
Oracle 12c-优化 Hint详解.pdf Oracle 12c-优化 Oracle 索引技术.pdf Oracle 12c 执行计划.pdf ...Oracle 12c 使用绑定变量 VS 不使用绑定变量.pdf Oracle 12c 自动工作负载信息库AWR.pdf Oracle 12c 常用SQL.pdf