Pregunta

Trabajo con MySQL últimamente, desde PHP, me pregunto acerca de esto:

  • ¿Cuál es el impacto en el rendimiento mediante el uso de múltiples mysql_real_escape_string() veces en un guión?
  • ¿Vale la pena tratar de reducir el número de llamadas a esta función para un script dado?
  • Qué se determina el conjunto de caracteres de la conexión cada vez que se llama, o se almacena en caché este valor?

Si se necesita un escenario, estoy pensando en PHP, y la distinción entre el texto y números, donde los números (utilizando intval(), floatval() o reproducción directa) se pueden incluir, sin una llamada.

¿Fue útil?

Solución

No hacer economías de chicha y nabo.

Sus preguntas están en el ámbito de la micro-optimizaciones. La creación de un índice de necesitábamos o almacenamiento en caché de algunos resultados de la consulta tendrá un orden de magnitud mayor beneficio que preocuparse por el impacto en el rendimiento de algunas llamadas a mysql_real_escape_string().

Por cierto, typecasting con (int) $variable es ligeramente más rápido que llamar intval($variable). Pero esto también sería un micro-optimización.

Otros consejos

Si necesita escapar entrada del usuario antes de la entrada de base de datos, entonces usted tendrá que usar mysql_real_escape_string() ... no se preocupe demasiado acerca de la optimización prematura.

Como alternativa, se puede mirar en declaraciones preparadas que se ahorrará tener que llamar a esta función varias veces -. Y es más seguro, ya que separa la lógica SQL desde la entrada del usuario por completo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top