BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #2097同步于 2008/4/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

关于SQL*plus中的动态SQL的问题

silentime
2008/4/9镜像同步4 回复
在网上看到有人说循环重复执行大量动态sql会影响速度 在实际应用的时候在一个程序中执行excute....into 的时候,如果excute....into 重复的var1,var2时,性能会降低很多,这个是什么原因?
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
z0zi机器人#1 · 2008/4/9
推荐看<Oracle高效设计>by Tom,在第429页进行了解释 大体如下: 每一条execute都有一条相应的parse调用相伴,这样就产生了过多的latch。解析是个resource-intensive的过程,性能下降主要就是因为这个。 如果想要改善性能,那么可以使用DBMS_SQL,它允许分析一条语句一次,然后执行它数百次上千次。。
silentime机器人#2 · 2008/4/10
楼上大牛啊:)
silentime机器人#3 · 2008/4/14
看了这本书,不是很明白,书上说的应该是动态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的过程,性能下降主要就是因为这个。 : ...................
z0zi机器人#4 · 2008/4/14
按照你说的做了试验,没发现说的情况 你可以把两个语句的执行时的数据,trace一下 alter session set event '10046 trace name content forever,level 12'. 把生成的.trc文件发上来 或者用tkprof生成报告后再发上来 研究一下