存储过程EXECUTE IMMEDIATE V_SQL执行很慢或出不来,如果把V_SQL语句拿出来单独执行很快,这是为什么?

存储过程EXECUTEIMMEDIATEV_SQL执行很慢或出不来,如果把V_SQL语句拿出来单独执行很快,这是为什么?高手帮忙看下,谢谢... 存储过程EXECUTE IMMEDIATE V_SQL执行很慢或出不来,如果把V_SQL语句拿出来单独执行很快,这是为什么?高手帮忙看下,谢谢 展开
 我来答
47522341
2011-01-20 · TA获得超过668个赞
知道小有建树答主
回答量:189
采纳率:0%
帮助的人:147万
展开全部
这个可能的原因有很多;
首先,execute immediate v_sql语句需要硬解析,这是一个较为耗时的过程,而直接拿出来执行的语句,其查询分析树已经存在,所以只需要软解析。
另外,execute immediate语句由于是硬解析,所以每次出来的计划都有可能不同,这是最需要注意的,可以为两种执行方法设置10046跟踪,看一下每种方法的耗时点,以及执行计划的异同。

以下配置可以在plsql developer的命令窗口中执行,也可以在sqlplus中执行;

sql> alter session set events '10046 trace name context forever,level 8';
sql > execute immediate v_sql;
sql> v_sql;

sql> alter session set events '10046 trace name context off';

完成上述操作后登录到数据库服务器上,在cmd(windows)或者 shell(unix)环境下执行
$ tkprof tracefile.trc tracefile.txt sys=no
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式