Как работает Pragma UDF? - PullRequest
       13

Как работает Pragma UDF?

0 голосов
/ 15 января 2019

Недавно я читал о методе оптимизации UDF Pragma в Oracle Database 12.

Мне очень интересно, как именно это работает. Я нашел только очень краткое описание в документации Oracle .

Как я понимаю, каждая Pragma в PL / SQL является своего рода директивой компилятора (я могу ошибаться здесь), похожей на C ++ Pragma Directives .

Может быть, кто-то может объяснить мне более подробно (или предоставить ссылки :)), как работает внутренний механизм UDF Pragma?

1 Ответ

0 голосов
/ 15 января 2019

Внутренние компоненты нам не доступны, но, по сути, прагма - это инструкция для компилятора, направленная на снижение затрат на издержки переключения контекста SQL в PLSQL =>. Если бы мне пришлось выдвигать гипотезу, я бы сказал, что она использует преимущества другой функции 12c, которая позволяет PLSQL напрямую в общем табличном выражении, например

WITH 
  myfunction(x int) return int as
  begin
    ...
    return ...
  end;
select myfunction(col) from my_table

Функции PLSQL, закодированные, как указано выше, существуют исключительно на время выполнения SQL, а также выполняются с улучшенными характеристиками производительности по сравнению с автономными функциями. Поэтому я подозреваю, что прагма UDF позволяет вызывать автономную функцию по тому же пути кода, что и встроенный пример выше.

(но все только гипотеза с моей стороны)

...