У меня есть проект, который, по сути, представляет собой пакет вычислений. Это зависит от нескольких параметров, которые, хотя и не являются константами (они могут меняться со временем), не могут измениться в пакетном контексте.
Чтобы было понятно, подумайте о ставке НДС: она может меняться со временем, но когда кто-то закрывает отчетный период, она ведет себя как константа в том, что касается самого закрытия.
Поскольку эти параметры находятся повсюду, я хотел бы найти способ максимально ограничить поиск в БД. В идеале я бы реализовал ДЕТЕРМИНИСТИЧЕСКУЮ функцию, но об этом не может быть и речи - как это предлагается в соответствующей документации.
Есть идеи/предложения?
Заранее спасибо.
РЕДАКТИРОВАТЬ: Имейте также в виду, что эти значения хранятся в базе данных, так как мы можем сохранить ставку НДС, чтобы мы могли знать ее значение в данный момент времени. Хотя это и не ожидается, но возможно, что пакет, относящийся к какому-то предыдущему периоду, будет запущен снова - и ему потребуется знать значение его параметров, какими они были тогда.
Преимущество функции DETERMINISTIC заключается в том, что, учитывая тот факт, что она дает согласованные результаты (один и тот же ввод всегда дает один и тот же результат), я бы сделал, если бы эти значения были константами, и я не хотел бы отслеживать их. Но в документации четко указано, что если функция выполняет поиск в БД, она никогда не должна быть ДЕТЕРМИНИСТИЧЕСКОЙ.