什么更快/更好使用:MySQL或PHP md5功能?

Hai*_*vgi 13 php mysql performance md5 function

我检查了用户对DB的密码.

什么是更快,MySQL MD5功能

... pwd = MD5('.$pwd.')
Run Code Online (Sandbox Code Playgroud)

PHP MD5功能

... pwd = '.md5($pwd).'
Run Code Online (Sandbox Code Playgroud)

这两种选择之间的正确方法是什么?

Pas*_*TIN 25

如果您的应用程序只是在有人在您的网站上注册或登录时计算md5,那么您每小时会有多少次调用md5吗?几百个?如果是这样,我认为PHP和MySQL之间真正的微小差别根本不会很大.

问题应该更像是"我在哪里使用md5存储密码的事实"而不是"什么让我几乎没有赢".

而且,作为旁注,另一个问题可能是:您在哪里可以花费资源进行这种计算?如果你有10个PHP服务器和一个DB服务器已经负载很重,你会得到答案;-)

但是,只是为了好玩:

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

在PHP中:

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

给出:

$ php ~/developpement/tests/temp/temp.php
3.3341760635376
Run Code Online (Sandbox Code Playgroud)

但你可能不会像这样计算百万md5,对吗?

(这与防止SQL注入无关:只需转义/引用您的数据!总是!或使用预准备语句)

  • 当所有其他方法都失败时,进行实验. (7认同)
  • 所以你将在数据库中保存大约1微秒,而不是在php中.听起来很微不足道,但仍然很有趣 (2认同)

Kip*_*Kip 5

我不知道哪个更快,但如果你在PHP中这样做,你就避免了SQL注入的可能性.