sql >> データベース >  >> RDS >> Mysql

MySQLまたはPHPのmd5関数:より速く/より良いものは何ですか?

    誰かがあなたのサイトに登録したとき、またはログインしているときにアプリケーションがmd5を計算しているだけの場合、md5への多くの呼び出しを所有しますか?数百?もしそうなら、私は本当に小さいとは思わない PHPとMySQLの違いはまったく重要です。

    質問は、「何が私にほとんど何も勝てないのか」というよりも、「パスワードがmd5を使用して保存されているという事実をどこに置くのか」のようなものでなければなりません。

    そして、補足として、別の質問があります:その種の計算にリソースを費やす余裕はどこにありますか? 10台のPHPサーバーと1台のDBサーバーがすでに高負荷になっている場合は、答えが得られます;-)

    しかし、楽しみのために:

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

    そしてPHPの場合:

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

    与える:

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

    しかし、おそらくこのように100万md5を計算することはないでしょう?

    (これはSQLインジェクションの防止とは関係ありません。データをエスケープ/引用するだけです!常に!またはプリペアドステートメントを使用してください)



    1. Oracleでグローバル一時テーブルを回避する方法

    2. インデックスとソートの列順序に関する考慮事項

    3. ソケットを介してローカルMySQLサーバーに接続します

    4. Postgresqlでアップサートを実行しているときにONCONFLICT句で部分インデックスが使用されない