2010-09-04 4 views
1

Работа с MySQL в последнее время, из PHP, я интересно об этом:Сделки с использованием mysql_real_escape_string

  • Что влияет на производительность при использовании mysql_real_escape_string() несколько раз в скрипте?
  • Стоит ли пытаться уменьшить количество вызовов этой функции для данного сценария?
  • Определяет ли он, что набор символов соединения вызывается каждый раз, или это значение кэшируется?

Если сценарий нужен, я думаю о PHP, и различие между текстом и числами, где число (используя intval(), floatval() или прямых забросами) может быть включен без вызова.

ответ

4

Не будьте ни копейки, ни фунта.

Ваши вопросы находятся в сфере микро-оптимизации. Создание необходимого индекса или кэширование некоторого результата запроса будет иметь на порядок больше выгоды, чем беспокоиться о влиянии производительности на несколько звонков на mysql_real_escape_string().

Кстати, приведение типов с (int) $variable немного быстрее, чем вызов intval($variable). Но это тоже будет микро-оптимизация.

2

Если вам нужно избежать ввода пользователя перед входом в базу данных, вам придется использовать mysql_real_escape_string() ... не беспокойтесь слишком много о преждевременной оптимизации.

В качестве альтернативы вы можете просмотреть подготовленные операторы, которые позволят вам вызвать эту функцию несколько раз - и она более безопасна, поскольку она полностью отделяет логику SQL от пользовательского ввода.

Смежные вопросы