Oracle PLSQL脚本优化/调优

Oracle PLSQL脚本优化/调优,oracle,performance,optimization,plsql,bulk-operations,Oracle,Performance,Optimization,Plsql,Bulk Operations,我有这个plsql脚本。我能够在一个大约有300行的测试表上测试这个,它工作得非常好。但是,当我尝试使用实际的表(大约有1百万行)运行此操作时,它并没有完成。我想征求您关于如何优化我的脚本的建议,我是plsql新手,因此任何想法/建议都会有很大帮助。:) 等效纯SQL语句: UPDATE PP_TRANCHE_RBS SET pt03d = pt04d WHERE bgroup = 'RBS' and pt03d = pt04d + 1; 这可能会比程序版本运行得更快。PL

我有这个plsql脚本。我能够在一个大约有300行的测试表上测试这个,它工作得非常好。但是,当我尝试使用实际的表(大约有1百万行)运行此操作时,它并没有完成。我想征求您关于如何优化我的脚本的建议,我是plsql新手,因此任何想法/建议都会有很大帮助。:)


等效纯SQL语句:

  UPDATE PP_TRANCHE_RBS
  SET pt03d = pt04d
  WHERE bgroup = 'RBS'
  and   pt03d = pt04d + 1;

这可能会比程序版本运行得更快。PL/SQL批量处理比逐行处理快,但通常比基于单个集合的操作慢。因此,当您有复杂的转换逻辑时,请将其保存起来,因为这些逻辑只能按程序处理

等效纯SQL语句:

  UPDATE PP_TRANCHE_RBS
  SET pt03d = pt04d
  WHERE bgroup = 'RBS'
  and   pt03d = pt04d + 1;

这可能会比程序版本运行得更快。PL/SQL批量处理比逐行处理快,但通常比基于单个集合的操作慢。因此,当您有复杂的转换逻辑时,请将其保存起来,因为这些逻辑只能按程序处理

有错误信息吗?DBMS_OUTPUT.put_line()调用的值是多少?没有错误消息或任何输出:(DBMS_OUTPUT.put_line(t_refno.count | | |'rows wasted');?设置DBMS_OUTPUT.enable(NULL);在代码的开头。如果您是通过SQLPlus运行此操作,也可以在运行代码之前运行set serveroutput on。是的,我的脚本中已经有这些内容。@tale852150在过程完成之前不会获取服务器输出任何错误消息?DBMS_输出的值是多少。put_line()调用?没有错误消息或任何输出:(DBMS_OUTPUT.put_line(t_refno.count | |'rows was updated')没有任何内容)??设置DBMS_OUTPUT.enable(NULL);在代码的开头。如果您是通过SQLPlus运行此操作,也可以在运行代码之前运行set-serveroutput-on。是的,我的脚本中已经有了这些内容。@tale852150在过程完成之前,不会获取服务器输出