Транзакции с использованием 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 от ввода пользователя.

Другие вопросы по тегам