Мне было интересно, как передача NOCOPY
в качестве параметра функции может повысить производительность функции, возвращающей SYS_REFCURSOR
.
После прочтения документации Oracle я прочитал следующее:
Этот метод может значительно ускорить передачу больших объемов данных в параметрах OUT, таких как коллекции, большие значения VARCHAR2 или большие объекты.
Поскольку SYS_REFCURSORS
являются указателями на результирующий набор для запроса, а SELECT
является самой быстрой операцией в SQL, есть ли преимущество передачи такой функции, как <SYS_REFCURSOR> OUT NOCOPY SYS_REFCURSOR
, в функцию?
Я нашел эту тему , но появляются два мнения:
1 - мы можем увеличить производительность вызова по ссылке, а не по значению следующим образом:
Procedure (vRefCur OUT NOCOPY SYS_REFCURSOR).
2 - SYS_REFCURSOR
уже является указателем (ссылка) и для повышения производительности необходимо оптимизировать оператор SQL.
Что вы думаете?
Заранее спасибо!