MySQL データベースへの効率的な行挿入
MySQL データベースへの大量の行の挿入は、特に単一行挿入などの従来の方法。パフォーマンスを向上させるには、より効率的な手法の採用を検討してください。
単一行挿入と一括挿入
通常、単一行挿入は、個々のレコードを 1 つずつ挿入するために使用されます。ある時間。このアプローチは簡単ですが、大規模なデータセットを扱う場合は非効率になる可能性があります。代わりに、一括挿入を使用して複数の行を同時に挿入することを検討してください。複数の行値を 1 つの INSERT ステートメントに連結することで、時間を大幅に節約できます。
コードの実装
次のコードは、大幅に改善できる一括挿入アプローチを示しています。挿入速度:
public static void BulkToMySQL() { string ConnectionString = "server=192.168.1xxx"; StringBuilder sCommand = new StringBuilder("INSERT INTO User (FirstName, LastName) VALUES "); using (MySqlConnection mConnection = new MySqlConnection(ConnectionString)) { List<string> Rows = new List<string>(); for (int i = 0; i < 100000; i++) { Rows.Add(string.Format("('{0}','{1}')", MySqlHelper.EscapeString("test"), MySqlHelper.EscapeString("test"))); } sCommand.Append(string.Join(",", Rows)); sCommand.Append(";"); mConnection.Open(); using (MySqlCommand myCmd = new MySqlCommand(sCommand.ToString(), mConnection)) { myCmd.CommandType = CommandType.Text; myCmd.ExecuteNonQuery(); } } }
このコードは、挿入する行を反復処理し、バルクを構築します。個々の行の値を連結して INSERT ステートメントを実行します。結果のステートメントはすべての行を同時に挿入し、大幅なパフォーマンスの向上につながります。
セキュリティのための入力データのエスケープ
一括挿入では潜在的なセキュリティ脆弱性が露出する可能性があることに注意することが重要です。 SQL インジェクションを防ぐには、ユーザー入力を INSERT ステートメントに含める前にエスケープすることが重要です。上記のコードで示されているように、MySqlHelper.EscapeString はこの目的に使用できます。
以上がMySQL データベースに大量の行を効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。