首页
学习
活动
专区
圈层
工具
发布

PLSQL性能
EN

Stack Overflow用户
提问于 2018-05-24 17:03:29
回答 1查看 35关注 0票数 0

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

以下是我需要澄清的内容。

我正在将局部变量和过程参数的数据类型从NUMBER更改为PLS_INTEGER,并且在子程序中也是如此,但不是所有子程序都会影响调用包是否具有PLS_INTEGER而子程序具有NUMBER数据类型,例如。

代码语言:javascript
复制
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作为数字,这对性能有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2018-05-27 12:38:15

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

这个问题听起来像是强迫症的症状。将NUMBER更改为PLS_INTEGER是您始终可以进行的简单、容易和快速的更改之一,但最终仍然毫无价值。

在调优之前,您应该在脑海中有一个特定的性能问题和目标。然后第二个任务是分析代码,找出最慢的部分和值得关注的部分。这听起来很简单,但是专注于容易的事情而不是重要的事情是很有诱惑力的。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50505227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档