В операторе SQL SELECT
я хотел бы выполнить функцию, которая является детерминированной для области действия этого оператора SELECT
(или транзакция тоже будет в порядке):
select t.x, t.y, my_function(t.x) from t
Многие значения t.x
одинаковы, поэтому Oracle может пропустить вызов одной и той же функции снова и снова, чтобы ускорить процесс. Но если я маркирую функцию как DETERMINISTIC
, результаты могут быть кэшированы между несколькими выполнениями этого запроса. Причина, по которой я не могу использовать DETERMINISTIC
, заключается в том, что my_function
использует параметр конфигурации, который время от времени изменяется.
Могу ли я использовать другое ключевое слово? Есть ли какие-то уловки, о которых мне следует знать (проблемы с памятью, параллелизм и т. Д.)? Или, может быть, есть какие-то другие приемы, такие как аналитические функции, для вызова функции только один раз за t.x
значение (без существенного влияния на производительность)?