ホームページ  >  記事  >  データベース  >  PDO を使用して MySQL テーブルに複数の行を挿入するには、反復挿入とバッチ挿入のどちらの方法がより効率的ですか?

PDO を使用して MySQL テーブルに複数の行を挿入するには、反復挿入とバッチ挿入のどちらの方法がより効率的ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-11 12:07:03685ブラウズ

Which Method is More Efficient for Inserting Multiple Rows into a MySQL Table with PDO: Iterative Insert or Batch Insert?

PDO MySQL を使用した複数の行の挿入: パフォーマンスと効率

PDO を使用して MySQL テーブルに複数の行を挿入する場合、いくつかの方法があります。考慮する。この質問では、2 つの一般的なメソッドの相対的な効率と安全性を調査します。

メソッド 1: foreach を使用した反復挿入

$stmt = $db->prepare($sql);

foreach ($rows as $row) {
  $stmt->execute($row);
}

メソッド 2: を使用したバッチ挿入連結

$sql = "insert into `table_name` (col1, col2, col3) values ";
$sql .= //not sure the best way to concatenate all the values, use implode?
$stmt = $db->prepare($sql)->execute();

パフォーマンスに関する考慮事項

バッチ挿入 (方法 2) は、数が削減されるため、一般に反復挿入 (方法 1) より高速です。データベースに送信されたクエリの数。ただし、ほとんどの実際的なシナリオでは、パフォーマンスの違いは無視できます。

安全性と信頼性

どちらの方法も、正しく使用すれば安全で信頼性が高くなります。 SQL インジェクションの脆弱性を防ぐには、プリペアド ステートメントとパラメータ化されたクエリを使用することが重要です。

最良のアプローチ

最良のアプローチは、アプリケーションの特定の要件によって異なります。

  • 方法 1 (反復挿入) の方が簡単です
  • 方法 2 (バッチ挿入) は、大規模なデータ セットではより効率的ですが、より複雑なコードが必要です。

folgenden コードを方法 2 の修正バージョンとして考慮し、値の連結とパラメーター化に implode() を使用して改善します。安全性:

$sql = "insert into `table_name` (col1, col2, col3) values ";

$paramArray = array();
$sqlArray = array();

foreach ($rows as $row) {
    $sqlArray[] = '(' . implode(',', array_fill(0, count($row), '?')) . ')';
    foreach ($row as $element) {
        $paramArray[] = $element;
    }
}

$sql .= implode(',', $sqlArray);

$stmt = $db->prepare($sql);
$stmt->execute($paramArray);

以上がPDO を使用して MySQL テーブルに複数の行を挿入するには、反復挿入とバッチ挿入のどちらの方法がより効率的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。