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