PLSQL性能

时间:2018-05-24 09:03:29

标签: oracle plsql

我的任务是提高应用程序中某些包和程序的性能。 我们有大约1个包,它有15-20个程序的子程序。

以下是我要求的澄清。

我正在更改数据类型从NUMBER到PLS_INTEGER以获取局部变量和过程参数以及子程序,但是如果调用包具有PLS_INTEGER并且子程序具有NUMBER数据类型,它将影响所有子程序 例如

PACK1.MAINPROC ( a1 PLS_INTEGER,a2 PLS_INTEGER,a3 PLS_INTEGER,a4 PLS_INEGER )

procedure SUBPROCEDURE1( a1 NUMBER,a2 NUMBER)
begin
....
end

如上所述,主包有参数a1和a2有PLS_INTEGER,但在子过程中a1和a2用作NUMBER会对性能有任何问题吗?

1 个答案:

答案 0 :(得分:0)

PLS_INTEGER可能无法以任何有意义的方式改善您的表现。除非你有一个包含大量数学运算的紧密循环,否则你不太可能看到将NUMBER更改为PLS_INTEGER会带来任何好处。即使你确实有一个紧凑的循环,提高性能的最佳方法通常是用基于集合的解决方案替换它。

这个问题听起来像是强迫性调整障碍的症状。将NUMBER更改为PLS_INTEGER是您可以随时进行的简单,简单和快速的更改之一,但最终仍然毫无价值。

在调整之前,您应该考虑到特定的性能问题和目标。然后第二个任务是分析代码,找出哪个部分最慢,值得关注。这听起来很简单,但是把注意力集中在容易而不是重要的事情上是很诱人的。

(如果您已经这样做了,那么请在此处发布这些信息。如果您确实遇到了更改数据类型可能有帮助我们需要更多详细信息进行调查的情况。)