Основное отличие режимов выполнения функций VOLATILE и IMMUTABLE заключается в их поведении при нескольких вызовах с одинаковыми аргументами. 15
VOLATILE (изменчивая функция) может возвращать различные результаты. 12 Оптимизатор не делает никаких предположений о поведении таких функций. 1 В запросе, использующем изменчивую функцию, она будет вычисляться заново для каждой строки, когда потребуется её результат. 1
IMMUTABLE (постоянная функция) гарантированно всегда возвращает одинаковые результаты для одних и тех же аргументов. 12 Эта характеристика позволяет оптимизатору предварительно вычислить функцию, когда она вызывается в запросе с постоянными аргументами. 1
Ещё одно отличие заключается в видимости изменений, произведённых командой SQL, которая вызывает функцию. 15 Функция VOLATILE будет видеть такие изменения, тогда как IMMUTABLE — нет. 15