【问题标题】:PL/SQL - NOCOPY parameter to boost performancePL/SQL - 提高性能的 NOCOPY 参数
【发布时间】:2019-07-28 00:44:15
【问题描述】:

我想知道将NOCOPY 作为函数参数传递如何提高返回SYS_REFCURSOR 的函数的性能。

阅读Oracle文档后,我阅读了以下内容:

如果您在 OUT 参数中传回大量数据,例如集合、大 VARCHAR2 值或 LOB,此技术可以显着提高速度。

既然SYS_REFCURSORS 是指向查询结果集的指针,而SELECT 是SQL 中最快的操作,那么在函数中传递<SYS_REFCURSOR> OUT NOCOPY SYS_REFCURSOR 这样的东西有什么好处吗?

我找到了this thread,但出现了两种意见:

1 - 我们可以通过引用而不是通过值来提高性能调用,如下所示:

Procedure (vRefCur OUT NOCOPY SYS_REFCURSOR). 

2 - SYS_REFCURSOR 已经是一个指针 (link),为了提高性能,应该优化 SQL 语句。

你怎么看?

提前致谢!

【问题讨论】:

    标签: database oracle performance plsql


    【解决方案1】:

    至于性能 - 没有太大区别。

    如果未指定NOCOPY,Oracle 将只创建一个指针的另一个副本
    因此,如果您不想在系统中有两个相同的指针 - 提供 NOCOPY 提示。

    【讨论】:

    • 非常感谢! :)
    【解决方案2】:

    对于SYS_REFCURSOR 没有任何区别。 SYS_REFCURSOR 只是一个指针,即大小只有几个字节。

    LOB 的大小可能会有所不同,它可能有几个千兆字节甚至兆字节。

    【讨论】:

    • 是的,我明白了!谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2012-10-25
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    相关资源
    最近更新 更多