Транзакции с использованием mysql_real_escape_string
Работая с MySQL в последнее время, из PHP, мне интересно об этом:
- Какое влияние на производительность оказывает использование
mysql_real_escape_string()
несколько раз в сценарии? - Стоит ли пытаться уменьшить количество вызовов этой функции для данного скрипта?
- Определяет ли он набор символов соединения при каждом вызове, или это значение кэшируется?
Если нужен сценарий, я думаю о PHP, и различие между текстом и числами, где числа (используя intval()
, floatval()
или прямые приведения) могут быть включены без вызова.
2 ответа
Не будь мудрым и глупым.
Ваши вопросы находятся в сфере микрооптимизации. Создание необходимого индекса или кэширование некоторого результата запроса принесет на порядок больше пользы, чем беспокойство о влиянии на производительность нескольких обращений к mysql_real_escape_string()
,
Кстати, приведение типов с (int) $variable
немного быстрее звонка intval($variable)
, Но это тоже было бы микрооптимизацией.
Если вам нужно избежать ввода пользователя до входа в базу данных, вам придется использовать mysql_real_escape_string()
... не беспокойтесь о преждевременной оптимизации.
В качестве альтернативы вы можете посмотреть на подготовленные операторы, которые избавят вас от необходимости вызывать эту функцию несколько раз - и она более безопасна, так как полностью отделяет логику SQL от ввода пользователя.