ホームページ > データベース > mysql チュートリアル > MySQLi で大量の INSERT 操作を安全かつ効率的に実行するにはどうすればよいですか?

MySQLi で大量の INSERT 操作を安全かつ効率的に実行するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-16 16:18:12
オリジナル
529 人が閲覧しました

How Can I Securely and Efficiently Perform Mass INSERT Operations in MySQLi?

MySQLi での一括 INSERT 操作の最適化: 安全で効率的なアプローチ

MySQL データベースに大量のデータを挿入するには、セキュリティとパフォーマンスの両方。この記事では、SQL インジェクションのリスクを軽減しながら、テーブルに多数の行を効率的に挿入する方法について説明します。

ループ内で複数のプリペアド ステートメントを利用する提供されたコードは、パフォーマンスのボトルネックと潜在的なスタック オーバーフローの問題を引き起こす可能性があります。 。より良いアプローチは、挿入をトランザクション内に配置し、準備されたステートメントとパラメーター バインディングをループの外に移動することです。

$mysqli->query("START TRANSACTION");
$query = "INSERT INTO table (link) VALUES (?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("s", $one);
foreach ($array as $one) {
    $stmt->execute();
}
$mysqli->query("COMMIT");
ログイン後にコピー

トランザクションを使用する利点

トランザクションには、一括挿入に対していくつかの利点があります。

  • パフォーマンスの最適化: 複数の挿入をグループ化することによる
  • 原子性: トランザクションは、すべての挿入が正常に実行されるか、まったく実行されないかのいずれかを保証します。トランザクション中にエラーが発生した場合、エラーの前に行われた変更は自動的にロールバックされ、データの整合性が維持されます。
  • 分離: トランザクションは、挿入操作を他の同時データベース アクティビティから分離し、挿入操作を防止します。データ破損または競合状態。

パフォーマンス テストでは、挿入をトランザクションに移動すると、速度が大幅に向上しました。 10,000 回の反復では、実行時間はトランザクションなしの 226 秒からトランザクションありのわずか 2 秒に短縮されました。

このアプローチは、SQL の潜在的なリスクを軽減しながら、大規模なデータセットを MySQL データベースに挿入する安全かつ効率的なメカニズムを提供します。インジェクションとパフォーマンスのボトルネック。

以上がMySQLi で大量の INSERT 操作を安全かつ効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート