MySQL - СОЗДАТЬ ФУНКЦИЮ? ИЗМЕНЯЕТ ДАННЫЕ SQL?
Я собираюсь написать CREATE FUNCTION
с MySQL, и мне интересно, если CREATE TEMPORARY TABLE
рассчитывает на флаг MODIFIES SQL DATA
, Функция не изменяет какую-либо постоянную таблицу, а только временную таблицу, которую она создает для оптимизации. Должен ли я использовать флаг MODIFIES SQL DATA
или только READS SQL DATA
? Что действительно выгодно использовать MODIFIES SQL DATA
или же READS SQL DATA
флаг в любом случае?
1 ответ
На данный момент (MySQL 5.5) эти характеристики служат только в качестве документации в коде.
С http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html
Несколько характеристик предоставляют информацию о характере использования данных программой. В MySQL эти характеристики носят исключительно рекомендательный характер. Сервер не использует их для ограничения того, какие операторы разрешено выполнять подпрограмме.
Это в отличие от (NON)DETERMINISTIC
предложение, которое служит подсказкой оптимизатору, можно ли кэшировать результаты функции.