在Oracle程序中if-else太多,性能好坏?

时间:2012-05-05 10:49:00

标签: oracle procedure database-performance chain-of-responsibility

在一个过程中,我需要使用许多if-else条件来决定列的值。该脚本以

开头
  

FOR rec IN(SELECT ....)LOOP Begin

并决定 rec 子记录在每次迭代中可以获得的许多不同值。在某些情况下,可能只有2或3个变量赋值,有些情况包括运行单独的过程或执行INSERT操作。

这是否是从性能方面决策的最佳方法,因为循环的SELECT语句有很多记录,或者可能有更好的替代方案?如果我在编写此程序时调整责任链模式怎么办?这种方法会提高性能还是让事情变得更糟?

问候。

1 个答案:

答案 0 :(得分:3)

如果可能的话留在SQL里面。 对于更大的卷,请避免使用“if”,因为您将在PL / SQL端进行序列化。 如果可能的话,尽可能在SELECT中使用CASE。 例如,在SQL并行化的情况下,它可以由不同行的多个进程同时处理。

希望它有所帮助, 伊戈尔