暂无图片
EXECUTE IMMEDIATE作用
我来答
分享
Zoe
2024-12-04
EXECUTE IMMEDIATE作用

存储过程循环,循环内部有句sql,明明可以使用简单的select into 语句,没搞明白前人怎么会使用EXECUTE IMMEDIATE写法,跑2h不完。我改写成select into语句之后2分钟之内就跑完了。疑惑前人为什么这么写以及为什么使用EXECUTE IMMEDIATE写法时间就很长。

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
漫步者

动态SQL和静态SQL的差别是有的,但是按照你说的时间从2H到几分钟,这应该是不太可能的,差距没有这么的明显;你需要考虑其它因素的影响

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
Zoe

静态SQL的执行计划会被缓存,动态SQL每次执行时都需要重新解析。尤其在频繁执行的情况下,动态SQL性能远远慢于静态SQL。

暂无图片 评论
暂无图片 有用 1
打赏 0
Thomas

前人是照着他的前人应付任务,依葫芦画瓢,不求甚解的;而作者你是认真琢磨功能,想把代码写好的。这就是你和前人的不同之处。

暂无图片 评论
暂无图片 有用 0
打赏 0
广州_老虎刘

根据你的描述, 基本能够得出的结论就是, 你的execute immediate 没有使用using , 使用的是下面的写法, 每次执行都需要硬解析, 如果循环次数多, 时间长很多是正常的:

execute immediate 'select /*+ tag1 */count(*) from t1 where object_id='||i into v_cnt;



如果你使用的是带using(绑定变量写法)的execute immediate, 在执行时间上只会比select into的写法慢一点点,比如:

execute immediate 'select /*+ tag3 */count(*) from t1 where object_id=:xxx' into v_cnt using i;  这个是使用execute immediate的标准写法.


对应的select into 写法:

 select /*+ tag2 */count(*) into v_cnt from t1 where object_id=i;


暂无图片 评论
暂无图片 有用 2
打赏 0
Zoe
题主
2024-12-10
谢谢老师的详细讲解,确实是老师说的这种情况。
回答交流
Markdown


请输入正文
提交
相关推荐
oracle中文讲解巨作
回答 1
已采纳
OracleDatabase11g&MySQL5.6开发手册[OracleDatabase11g&MySQL5.6Handbook]中文版,而且是官方出版
Docker内安装Oracle19c 创建用户带#
回答 2
已采纳
C这种类型么?那是因为你创建的是容器数据库,而你是在CDB中创建用户,在CDB中创建用户必须要加C不想这样操作的话,可以创建个pdb,然后连接pdb,在pdb中创建用户,就类似在11g操作一样也可以重
job运行失败
回答 7
用户相关jOB,和schedul已经停止运行。
v$session中并没有执行sql,但是该进程还是占用CPU100%
回答 1
看等待事件或者10046
12.2的库正常关闭一直卡住
回答 13
看56681进程是啥,localno的话就杀掉
关于oracle表空间在线碎片整理
回答 4
已采纳
oracle10g开始提供shrink的命令,要求表空间是自动段空间管理(ASSM),降低HWM。segmentshrink分为两个阶段:1、数据重组(compact):通过一系列insert、del
11g rac安装,check这一步报错是什么原因呢
回答 3
两个节点查看fdiskl磁盘数量是否正常,multipathll是否正常、lslrt/dev/ocr,查看权限,进行对比
zabbix现在可以直接监控Oracle吗?
回答 4
已采纳
可以的。官方文档:https://www.zabbix.com/integrations/oracle安装示例:https://www.modb.pro/db/62643
win11系统装oracle兼容吗?
回答 4
已采纳
不兼容,官方支持列表:
Oracle12201 RAC,开启归档,不修改cluster_database参数的方式和修改cluster_database参数的方式有什么差异或者隐患?
回答 2
已采纳
开归档和clusterdatabase这个参数没有必然的联系。RAC环境下默认所有实例都是True,无需修改。开归档的过程是先关闭其他节点,然后留一个节点设置归档路径,干净的关闭实例,然后启动到mou
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~