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

mysqliに多くの値を挿入する最良の方法は?

    インサートをトランザクション内に配置することで、速度を大幅に向上させることができるはずです。準備ステートメントとバインドステートメントをループの外に移動することもできます。

    $array = array("array", "with", "about", "2000", "values");
    $query = "INSERT INTO table (link) VALUES (?)";
    $stmt = $mysqli->prepare($query);
    $stmt ->bind_param("s", $one);
    
    $mysqli->query("START TRANSACTION");
    foreach ($array as $one) {
        $stmt->execute();
    }
    $stmt->close();
    $mysqli->query("COMMIT");
    

    このコードをWebサーバーで10,000回繰り返してテストしました。

    トランザクションなし:226 seconds. トランザクションあり:2 seconds. または、two order of magnitude speed increase 、少なくともそのテストでは。



    1. 理由/有用性は、OracleデータベースステートメントでENABLEキーワードを使用することです。

    2. SQLServer2008でトランザクションログを表示する方法

    3. Oracleのデフォルトの制約名は何ですか?

    4. PowerShellを使用してパラメーターのデフォルト値を解析する–パート2