sql >> Base de Datos >  >> RDS >> Mysql

¿Qué es más rápido/mejor de usar:la función MySQL o PHP md5?

Si su aplicación solo está calculando md5 cuando alguien se registra en su sitio, o está iniciando sesión, ¿tendrá muchas llamadas a md5 por hora? ¿Un par de cientos? Si es así, no creo que el realmente pequeño la diferencia entre PHP y MySQL será significativa en absoluto.

La pregunta debería ser más como "¿dónde pongo el hecho de que las contraseñas se almacenan usando md5" que "lo que me hace ganar casi nada".

Y, como nota al margen, otra pregunta podría ser:¿dónde puede permitirse gastar recursos para ese tipo de cálculos? Si tiene 10 servidores PHP y un servidor de base de datos que ya está bajo una gran carga, obtendrá su respuesta;-)

Pero, solo por diversión:

mysql> select benchmark(1000000, md5('test'));
+---------------------------------+
| benchmark(1000000, md5('test')) |
+---------------------------------+
|                               0 |
+---------------------------------+
1 row in set (2.24 sec)

Y en PHP:

$before = microtime(true);
for ($i=0 ; $i<1000000 ; $i++) {
    $a = md5('test');
}
$after = microtime(true);
echo ($after-$before) . "\n";

da:

$ php ~/developpement/tests/temp/temp.php
3.3341760635376

Pero probablemente no estarás calculando un millón de md5 así, ¿verdad?

(Y esto no tiene nada que ver con la prevención de inyecciones de SQL:¡simplemente escape/cite sus datos! ¡siempre! o use declaraciones preparadas)