Разница между функциями с постоянными и изменяемыми параметрами в PostgreSQL заключается в их характеристиках изменчивости (VOLATILE, STABLE и IMMUTABLE): 13
- Изменчивая функция (VOLATILE) может делать всё, что угодно, в том числе, модифицировать базу данных. 1 Она может возвращать различные результаты при нескольких вызовах с одинаковыми аргументами. 1 В запросе, использующем изменчивую функцию, она будет вычисляться заново для каждой строки, когда потребуется её результат. 1
- Стабильная функция (STABLE) не может модифицировать базу данных и гарантированно возвращает одинаковый результат, получая одинаковые аргументы, для всех строк в одном операторе. 1 Эта характеристика позволяет оптимизатору заменить множество вызовов этой функции одним. 1
- Постоянная функция (IMMUTABLE) не может модифицировать базу данных и гарантированно всегда возвращает одинаковые результаты для одних и тех же аргументов. 1 Эта характеристика позволяет оптимизатору предварительно вычислить функцию, когда она вызывается в запросе с постоянными аргументами. 1