用Oracle绑定变量替代sql语句里常量
2013-08-02 10:20
323 查看
http://database.51cto.com/art/201004/192426.htm
在实际相关应用操作过程中的具体操作中唯一能使得Oracle 能重复的利用执行计划的相关方法就是用绑定变量的方法。其实Oracle绑定变量的实质就是用于替代sql语句中的常量的替代变量。
Oracle 中,对于一个提交的sql语句,存在两种可选的解析过程, 一种叫做硬解析,一种叫做软解析.
一个硬解析需要经解析,制定执行路径,优化访问计划等许多的步骤.硬解释不仅仅耗费大量的cpu,更重要的是会占据重要的们闩(latch)资源,严重的影响系统的规模的扩大(即限制了系统的并发行), 而且引起的问题不能通过增加内存条和cpu的数量来解决。
之所以这样是因为门闩是为了顺序访问以及修改一些内存区域而设置的,这些内存区域是不能被同时修改。当一个sql语句提交后,Oracle 会首先检查一下共享缓冲池(shared pool)里有没有与之完全相同的语句,如果有的话只须执行软分析即可,否则就得进行硬分析。
而唯一使得Oracle 能够重复利用执行计划的方法就是采用绑定变量。绑定变量的实质就是用于替代sql语句中的常量的替代变量。绑定变量能够使得每次提交的sql语句都完全一样。
绑定变量只是起到占位的作用,同名的绑定变量并不意味着在它们是同样的,在传递时要考虑的是传递的值与绑定变量出现顺序的对位,而不是绑定变量的名称。
如何使用Oracle绑定变量
清表
不使用绑定变量
在实际相关应用操作过程中的具体操作中唯一能使得Oracle 能重复的利用执行计划的相关方法就是用绑定变量的方法。其实Oracle绑定变量的实质就是用于替代sql语句中的常量的替代变量。
Oracle 中,对于一个提交的sql语句,存在两种可选的解析过程, 一种叫做硬解析,一种叫做软解析.
一个硬解析需要经解析,制定执行路径,优化访问计划等许多的步骤.硬解释不仅仅耗费大量的cpu,更重要的是会占据重要的们闩(latch)资源,严重的影响系统的规模的扩大(即限制了系统的并发行), 而且引起的问题不能通过增加内存条和cpu的数量来解决。
之所以这样是因为门闩是为了顺序访问以及修改一些内存区域而设置的,这些内存区域是不能被同时修改。当一个sql语句提交后,Oracle 会首先检查一下共享缓冲池(shared pool)里有没有与之完全相同的语句,如果有的话只须执行软分析即可,否则就得进行硬分析。
而唯一使得Oracle 能够重复利用执行计划的方法就是采用绑定变量。绑定变量的实质就是用于替代sql语句中的常量的替代变量。绑定变量能够使得每次提交的sql语句都完全一样。
绑定变量只是起到占位的作用,同名的绑定变量并不意味着在它们是同样的,在传递时要考虑的是传递的值与绑定变量出现顺序的对位,而不是绑定变量的名称。
create table t (a varchar2(20),b varchar2(20));
如何使用Oracle绑定变量
declare v_sql varchar2(50); begin for i in 1..100000 loop v_sql := 'insert into t values (:1,:2)'; execute immediate v_sql using 'a'||i,'b'||i; end loop; commit; end; /
清表
truncate table t;
不使用绑定变量
declare begin for i in 1..100000 loop insert into t values ('a'||i,'b'||i); end loop; commit; end; /
相关文章推荐
- Oracle中PL/SQL语句的变量、常量声明和赋值
- V$SQL视图中SQL_TEXT的SQL语句是绑定变量,常量在v$sql_bind_capture视图的VLUE_STRING字段中可以查到
- 在JAVA 源程序中编写SQL语句时使用ORACLE 绑定变量
- Oracle读书摘录1---为什么要书写绑定变量的SQL语句
- Oracle PL/SQL变量、常量、流程控制、循环语句
- oracle v$sqlarea 分析SQL语句使用资源情况 确认是否绑定变量
- Oracle 获取没有使用绑定变量的SQL语句
- 在JAVA 源程序中编写SQL语句时使用ORACLE 绑定变量
- Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名
- oracle v$sqlarea 分析SQL语句使用资源情况 确认是否绑定变量
- 使用字面量或者绑定变量在HANA Studio里执行SQL语句
- 捕获非绑定变量的SQL语句
- 获取oracle sql语句中绑定变量值的方法
- 获取oracle sql语句中绑定变量值的方法
- oracle 绑定变量和动态sql
- oracle中申明变量并执行sql语句(貌似跟sql server有点差别)
- 使用字面量或者绑定变量在HANA Studio里执行SQL语句
- 【SQL】Oracle 数据库的绑定变量特性及应用
- SqlServer和Oracle中一些常用的sql语句4 局部/全局变量
- Oracle PL/SQL 绑定变量