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