返回信息流在网上看到有人说循环重复执行大量动态sql会影响速度
在实际应用的时候在一个程序中执行excute....into 的时候,如果excute....into 重复的var1,var2时,性能会降低很多,这个是什么原因?
这是一条镜像帖。来源:北邮人论坛 / database / #2097同步于 2008/4/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
关于SQL*plus中的动态SQL的问题
silentime
2008/4/9镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
推荐看<Oracle高效设计>by Tom,在第429页进行了解释
大体如下:
每一条execute都有一条相应的parse调用相伴,这样就产生了过多的latch。解析是个resource-intensive的过程,性能下降主要就是因为这个。
如果想要改善性能,那么可以使用DBMS_SQL,它允许分析一条语句一次,然后执行它数百次上千次。。
看了这本书,不是很明白,书上说的应该是动态sql执行次数较多是会出现性能下降的问题吧?
我说的重复实际上就重复一次:
sqlstring:='......';
excute sqlstring into v1,v2......
sqlstring:='......';
excute sqlstring into v1,v2......
当重复使用v1,v2时,在第二条excute处会非常慢,如果换了不同的变量,就会很快,不知道是什么原因?
【 在 z0zi 的大作中提到: 】
: 推荐看<Oracle高效设计>by Tom,在第429页进行了解释
: 大体如下:
: 每一条execute都有一条相应的parse调用相伴,这样就产生了过多的latch。解析是个resource-intensive的过程,性能下降主要就是因为这个。
: ...................
按照你说的做了试验,没发现说的情况
你可以把两个语句的执行时的数据,trace一下
alter session set event '10046 trace name content forever,level 12'.
把生成的.trc文件发上来
或者用tkprof生成报告后再发上来
研究一下