Se sua aplicação está apenas calculando md5 quando alguém se cadastra em seu site, ou está logando, possui muitas chamadas para md5 você fará por hora ? Algumas centenas? Se sim, não acho que o muito pequeno diferença entre PHP e MySQL será significativa.
A pergunta deveria ser mais como "onde coloco o fato de a senha ser armazenada usando md5" do que "o que me faz ganhar quase nada".
E, como nota, outra pergunta poderia ser:onde você pode gastar recursos para esse tipo de cálculo? Se você tem 10 servidores PHP e um servidor de banco de dados já sob carga pesada, você obtém sua resposta;-)
Mas, apenas por diversão:
mysql> select benchmark(1000000, md5('test'));
+---------------------------------+
| benchmark(1000000, md5('test')) |
+---------------------------------+
| 0 |
+---------------------------------+
1 row in set (2.24 sec)
E em PHP:
$before = microtime(true);
for ($i=0 ; $i<1000000 ; $i++) {
$a = md5('test');
}
$after = microtime(true);
echo ($after-$before) . "\n";
dá:
$ php ~/developpement/tests/temp/temp.php
3.3341760635376
Mas você provavelmente não estará calculando um milhão de md5 assim, não é?
(E isso não tem nada a ver com a prevenção de injeções de SQL:apenas escape/cite seus dados! sempre! ou use instruções preparadas)