Transacciones utilizando mysql_real_escape_string
-
30-09-2019 - |
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.
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