Вопросы к Поиску с Алисой
Основное отличие режимов выполнения функций VOLATILE и IMMUTABLE заключается в их поведении при нескольких вызовах с одинаковыми аргументами. postgrespro.ru www.postgresql.org
VOLATILE (изменчивая функция) может возвращать различные результаты. postgrespro.ru ru.stackoverflow.com Оптимизатор не делает никаких предположений о поведении таких функций. postgrespro.ru В запросе, использующем изменчивую функцию, она будет вычисляться заново для каждой строки, когда потребуется её результат. postgrespro.ru
IMMUTABLE (постоянная функция) гарантированно всегда возвращает одинаковые результаты для одних и тех же аргументов. postgrespro.ru ru.stackoverflow.com Эта характеристика позволяет оптимизатору предварительно вычислить функцию, когда она вызывается в запросе с постоянными аргументами. postgrespro.ru
Ещё одно отличие заключается в видимости изменений, произведённых командой SQL, которая вызывает функцию. postgrespro.ru www.postgresql.org Функция VOLATILE будет видеть такие изменения, тогда как IMMUTABLE — нет. postgrespro.ru www.postgresql.org