我是一个SQL的初学者
今天听人说"绑定变量"能够提高sql的效率
哪位大虾能解释一下"绑定变量"的含义吗(最好举一个简单的例子),
为何能提高效率呢
好感激阿
今天听人说"绑定变量"能够提高sql的效率
哪位大虾能解释一下"绑定变量"的含义吗(最好举一个简单的例子),
为何能提高效率呢
好感激阿
解决方案 »
- while的问题
- 在一本书上看到这样一段话:“要缓存的默认序列号个数是20,经验表明这个数量并不够。如果应用程序每秒从序列中选择10次,那么要将缓存值设置为50000。”
- Oracle merge语句
- linux下加载ISO文件报错
- 高分求助:update语句;产品制定了统一零售价后,分销价格的销售价,最高/最低价必须和统一零售价一致,并更改状态。。
- vc、oo4o访问oracle数据库时怎么能访问到SD0_GEOMETRY内部
- 求助 关于多表统计
- 使用sql plus将选出的结果输出到文件中,如何能让head只显示一次?
- 如何找出所有名字中有'丰'字的记录?
- 怎么在数据库里新建新用户、密码啊?
- 在存储过程中能否用游标来返回其他用户的数据集?我建同义词提示无此表!
- 谁能Oracle存储过程语法???
使用绑定变量可以减少Oracle对语句的硬分析,加快语句的执行
在实际中没用过绑定变量,学习!
最简单的例子:
...
iServiceID number;
begin
...
select * from service where ServiceID = iServiceID;
...
end;在实际应用中,这些都需要注意的ColinGan(浪子)说的是静态绑定,我找了个动态绑定的例子
declare
l_number number;
begin
for i in 1..10000
loop
l_number:=dbms_random.random;
execute immediate 'insert into t values(:x1,:x2,:x3,:x4)' using l_number,l_number,l_number,i;
end loop;
commit;
end;我在处理一次数据导入的循环代码中,
sql_str := ('update '||v_tblname||' t2 set a'||v_colnum||' = (:1) where t2.datatime = (:2)');
execute immediate sql_str using v_ei2(i),v_starttime;:1 处是具体数值,:2处是具体时间。在没有用binding的时候,执行一天的数据需要3个半小时左右,使用绑定变量的写法,运行时间缩短到10分钟左右。—— 因为通过数据库监控软件,我发现共享池报警,出现效率瓶颈的在于过多重复的解析 'update '||v_tblname||' t2 set a'||v_colnum||' = (:1) where t2.datatime = (:2) 这个语句—— 用绑定之后,就避免重复解析问题了。